zoukankan      html  css  js  c++  java
  • OSI 7层 vs TCP/IP 4~5 层模型介绍

    OSI 7层 vs TCP/IP 4~5 层模型介绍

    OSI 7层模型 (Open System Interconnection)

    OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

    这是一种事实上被TCP/IP 4层模型淘汰的协议。在当今世界上没有大规模使用。五层协议只是OSI和TCP/IP的综合,实际应用还是TCP/IP的四层结构。为了方便可以把下两层称为网络接口层。

    应用层:为用户提供服务,给用户提供 操作界面

    表示层:数据提供表示、加密、压缩

    会话层:确定数据是否需要进行网络传递, 认证和授权

    传输层:

    对报文进行分组(发送时)、组装(接收时)

    提供传输协议的选择:这基于应用场景选择,无优缺之分

    ​ TCP(传输控制协议):可靠的、面向连接的传输协议。流量控制,拥塞避免 (可靠、准确、慢)

    ​ UPD(用户数据报协议):不可靠的、面向无连接的传输协议。快速高效传输 (不可靠、快)

    端口封装: 含源端口和目标端口

    差错校验

    网络层:

    IP地址编址 : 包含源IP 和目的IP

    路由选择

    ​ 静态路由: 由管理员指定路径,对路由器消耗小,效率高,但是配置较复杂,适合路由请求少的场景

    ​ 动态路由:路由器根据路由协议动态判断。也基于路劲或带宽选择最优方式。对路由器消耗大,但是简单

    数据链路层: 在同一个广播域通讯,即局域网内部通讯

    MAC地址编址

    MAC地址寻址

    差错校验

    物理层:

    数据实际传输

    电气特性定义

    TCP/IP模型 VS OSI 模型

    TCP/IP 4层模型,即是将OSI的物理层和数据链路层合并为网络接口层,会话层、表示层和应用层 合并成为应用层

    TCP/IP 5层模型,底下4层同OSI的相同,只是将会话层、表示层和应用层 合并成为应用层

    重点介绍TCP/IP 4层模型

    1、主机到网络层:提供接口

    2、网络互联层:路由和寻址

    3、传输层:端到端的通讯

    ​ TCP:无差错高可靠,流量控制,拥塞避免

    ​ UPD:快速高效传输 (语音视频)

    4、应用层:

    ​ TCP应用:FTP、TELNET、HTTP

    ​ UDP应用:TFTP、NTP、语音视频等

    防火墙:数据包过滤(MAC地址、IP地址、协议、端口、数据包中的数据)

    uploading-image-828710.png

    数据从主机A 传递到主机B 简单数据流向:

    发送方A 需要将数据逐层包装,交给最终的物理层实现bits流传递

    接收方B收到数据后,则需要逐层解封,并校验数据

    完整的流程:发送方自上而下封装数据包,接收方自下而上解封数据包,中间是路由转发。

    TCP 三次握手过程

    TCP 协议数据格式

    TCP包头的作用:

    序号:seq序号,占32位,用来标识从TCP 源端向目的端发送的字节流,发送方发送数据时对此进行标记

    确认号:ACK序号,占32位,只有ACK 标志位为1时,确认序号字段才有效,ACK=seq+1

    标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN,具体含义如下:

    ​ URG: 紧急指针(urgent pointer)有效

    ACK: 确认序号有效

    ​ PSH:接收方应该尽快将这个报文交给应用层

    ​ RST:重置连接

    SYN:发起一个新连接

    FIN:释放一个新连接

    TCP三次握手:

    第一次握手:client将标志位SYN置为1,随机产生一个seq=J,并将该数据包发给server,client 进入SYN_SENT状态,等待server 确认

    第二次握手:server收到数据包后由标志位SYN=1知道client请求建立连接,server将标志位SYN和ACK 都置为1,将client 发来的ack序号J+1,随机产生一个server端的seq=K,并将该数据包发送给client以确认连接请求,server进入SYN_RCVD状态

    第三次握手:client收到确认后,检查ack序号是否为J+1,标志位ACK 是否为1,如果正确,则将client的ACK 置为1, ack序号=K+1,并将该数据包发给server。server检查ack序号是否为K+1,ACK是否为1,如果正确则连接建立成功。client和server 都进入ESTABLISHED状态,完成三次握手,随后,client和server之间可以开始传输数据。
    使用wireshark抓包工具,随便连接网页验证

    TCP四次挥手

    第一次挥手:client发送一个标志位为FIN=1包,seq序号m,用来关闭client到server的数据传输,client进入FIN_WAIT_1状态;

    第二次挥手:server收到标志位FIN=1包后,发送一个标志位ACK=1给client,ack确认序号为m+1,server进入CLOSE_WAIT状态

    第三次挥手:server发送一个标志位FIN=1, ACK=1. seq序号=n, ack确认号=m+1,用来关闭server到client 的数据传送,server进入LAST_ACK状态

    第四次挥手:client收到FIN后,client进入TIME_WAIT状态,接着发送一个ACK=1标志位给server,ack确认序号为n+1,server进入CLOSED状态,完成四次挥手。

    总结:

    ​ 第一二次为client向server发起中断连接的请求和应答

    ​ 第三四次为server向client 发起中断连接的请求和应答

    当前总是说的ELB或nginx实现四层或七层负载均衡,这里指的四层、七层依然是指OSI模型的四层、七层,即传输层和应用层。

    笔记来源于视频:

    https://www.bilibili.com/video/BV18K411p7QU?from=search&seid=9012918279501527273

    OSI分层应用实例讲解

    计算机之间的通讯

    计算机之间通过有线或无线的方式互联,中间经过许多路由环节。数据传输依赖于各种协议

    分层讲解:自上而下

    应用层

    web浏览器是在pc中运行的网络应用程序,它不驻留在应用层,但它使用应用层的HTTP / HTTPS 协议。其他应用亦如此,即所有网络应用程序都依赖于应用层协议

    表示层

    数据提供表示、加密、压缩

    会话层

    在建立和管理连接、启用、发送和接收数据(在连接或会话终止后),会话层使用助手,叫做API或者应用程序接口。

    netBIOS,即网络基本输入输出系统,可以作为API的一个例子,它允许不同计算机上的应用程序互相通讯

    在与服务器建立会话或连接之前,服务器会执行一项称为身份验证Authentication的功能,Authentication即验证”你是谁“的服务过程。可以是用户名密码或其他凭证,验证通过后,客户端和服务器之间才会建立连接;通过身份验证后,将会给用户授权Authorization,授权是服务器用来确定client 是否有访问文件的权限的过程。否则,client 将收到一条消息,指出你未被授权访问该页面。

    传输层

    会话层之下是传输 层,传输层通过分段、流量控制和差错控制,来控制通讯可靠性。

    分段:Segments

    在分段segmentation中,从会话层接收到的数据,被分成成为段的小数据单元data unit。每个网段包括一个源端口号、目的端口号和序列号。

    这些号码有助于引导每个网段指向正确的应用程序,序列号有助于安装正确的顺序重新组合段,以便在接收者处形成正确的消息

    流量控制:Flow control

    在流量控制中,传输层控制传输的数据量,假设一个移动设备连接到server,server 的最大可以传输100Mbps的数据,而移动设备最大可处理10Mbps 的数据。现在移动设备从server 下载一个文件,但是server开始以50Mbps的速度发送数据,这比移动设备的处理速率高,因此移动设备在传输层的帮助下,可以告诉server将数据传输速率降低到10Mbps,这样就不会有数据丢失。类似地,如果server 以5Mbps的速率发送数据,移动设备可以告诉server增加数据传输,提升到10Mbps,以保证系统性能。

    错误控制:Error control

    传输层也有助于每一个错误控制。如果某一个数据没有到达,目标传输层将使用自动重复请求方案,来重新传输丢失或损坏的数据

    重传数据

    校验

    传输层向每个段添加一组成为“校验和”的位,找出所接收到的传输层协议和控制协议,或TCP及UDP 的更新段。

    传输层执行两种类型的服务:面向连接的传输和无连接的传输。

    面向连接的传输,是通过TCP 连接来实现的,面向无连接的传输,是通过UDP来实现的.

    UDP比TCP 快,因为它不提供任何关于数据是否真正交付的反馈,而TCP 提供反馈,因此丢失的数据可以在TCP中重新传输。

    使用UDP时,我们是否接收到所有数据并不重要,例如,只有流媒体电影、歌曲、游戏、IP语音、TFTP、DNS等

    另一方面,TCP用于必须进行完整数据传输的场合,例如,万维网、电子邮件、FTP等。

    因此,传输层涉及到分段、流量控制、差错控制、面向连接和无连接

    网络层:

    传输层将数据传递到网络层,网络层用于将接收到的数据段,从一台计算机传递到不同网络中的另一台计算机。网络层中的数据单元称为数据包。

    网络层的功能是逻辑寻址、路由和路劲确定

    在网络层进行的IP寻址称为逻辑寻址。网络中的每台计算机都有唯一的IP 地址,网络层为每个网段分配发送方和接收方的IP 地址,形成一个IP 数据包。分配IP 地址是为了确保每个数据包到达正确的目的地。

    路由是一种将数据包从源端移动到目的端的方法,它是基于逻辑上 在此之前的IP 格式,IPv4 或IPv6

    假设计算机A 与网络1相连,计算机B 与网络2相连,我们从B电脑请求访问facebook网站,现在有了来自子算计B 中FaceBook服务器的回复,这些将以数据包的形式出现,而且这些数据包需要传输到计算机B,由于在网络中,每个设备都有唯一的IP地址,A,B计算机都有唯一的IP地址。而且FaceBook已经在数据包中添加了发送方和接收方的IP地址。假设掩码使用255.255.255.0,这个掩码表示,前三个组合代表网络,而最后一个组合代表主机或计算机B,将这样基于IP地址格式接收数据包,移动到 计算机的网络和终端,所以在计算机网络中,根据IP地址和掩码路由决定。

    然后到了路劲选择,计算机可以有多种方式连接到internet 服务器,从源到目标的数据传递的最佳可能路劲称为“路劲选择”。第三层设备使用的 协议有OSPF,边界网关协议BGP,以及中间系统到中间系统协议IS-IS,以确定数据传递的最佳可能路径。

    数据链路层

    从网络层接收数据包,数据包包含发送方和接收方的IP地址。有两种寻址方式:逻辑寻址和物理寻址

    逻辑寻址在网络层完成,其中发送方和接收方的IP地址被分配给每个段以形成数据包。

    物理寻址在数据链路层完成,其中MAC地址或发送者和接收者被分配给每个数据包以形成帧。MAC地址是由计算机制造商嵌入计算机的,网卡种的12位数字字母号码。数据链路层中的数据单元称为“帧”数据,链路层作为计算机的软件网络接口嵌入,以及提供经由本地介质将数据从一台计算机传递到另一台计算机的装置。本地媒体包括铜线、光纤或无线电信号。注意这里的Media不是音频、视频或动画,它是指两台或多台计算机或网络之间的物理链路。

    数据链路层执行两个基本功能:它允许上层使用成帧之类的各种技术访问介质,控制如何放置和接收来自介质的数据。

    考虑两台不同的主机,笔记本电脑或台式机,相互通讯时,笔记本电脑和台式机连接到不同的网络,他们将使用网络层协议,IP协议来互相通讯。在这个例子中,这些部件通过网线连接到路由器,路由器R1和R2连接到某地方,而笔记本电脑通过无线连接到路由器,现在下一步是将某些数据发送到笔记本电脑上,通过R1数据链路,在IP数据包的头部和尾部,添加一些数据,并将其转化位帧,在这种情况中,相当奇怪的一个接收到这个互联网帧的数据到一个IP数据包,然后计算它再次到一个帧,这样它就可以更接近光链路来到达R2,路由器R2将再次对接收到的帧进行封装,并再次计算,以形成无线数据链路帧。笔记本电脑接收到这个无线数据链路帧D并计算它,然后将IP数据包转发到网络层, 最后数据到的应用层,应用层协议将接收到的数据显示在计算机屏幕上。

    因此网络层或更高级别的层,能够在数据链路层的帮助下,在媒体上传输数据。也就是说,数据链路层为OSI模型更高层的用户,提供了对媒体的访问。数据链路层还控制如何放置数据和从介质接收数据,用于获取介质的帧的技术称为媒体访问控制。

    可能有多个设备连接到公共媒体介质,如果两个或多个连接到同一介质的设备,同时发送数据,那么这两个消息可能会发生冲突,从而导致一个没有收件人能够理解的无用信息,为了避免这些情况,数据链路层会密切关注,什么时候共享的媒体介质是空闲的,这样设备就可以为接收端传输数据。这就是所谓的CSMA--载波侦听多路访问技术,

    因此数据链路层及其媒体访问控制方法,控制着数据的传输,每一帧的数据包含用于在接收的帧中检查错误的位,错误的发生是由于传输数据的介质的某些限制。

    物理层

    物理层是最后一层。

    数据已经通过传输层进行了分割,分割成了网络层的数据包,现在是一种二进制序列,在物理层将这些二进制序列转换成信号并在本地媒体上传输,它可以是铜缆情况下的电信号,也可以是光缆情况下的光信号,也可以是空气情况下的无线电信号,因此物理层产生的信号,取决于用于连接接收器上的两个设备的介质类型。物理地接收信号,将其转换为bits,并将其传递到数据链路层,就像数据在较高层移动时,帧被解封一样,被移动到应用层。最后,数据被移动到应用程序的实时应用层协议。它使发送者的消息在接收方的计算机显示屏里可见。

    通过这种方式,或者作为一个模型,可以帮助在不同的主机之间传输数据。OSI大前提是互联网是平稳运行的。

    笔记来源于视频:

    https://www.bilibili.com/video/BV1qJ411J7Tt?from=search&seid=15397175897680858621

    ***************用努力照亮现实的梦!***********************
  • 相关阅读:
    c# 反射应用之工厂
    UnityContainer 实现DI
    TinyMCE 的音乐插件/mp3 music insert plugin
    Django on IronPython and Windows
    说说分页
    Katze 简单的.net "ORM"框架
    Discuz!NT在64位Windows下运行的问题
    恐怖的迅雷
    基于Gettext的asp.net网站多语言解决方案
    微软是如何输掉API之战(下)
  • 原文地址:https://www.cnblogs.com/orange2016/p/14425444.html
Copyright © 2011-2022 走看看