OSI七层网络模型
为了完成不同计算机或网络或架构之间的成功通信,国际标准化组织(ISO,1984)提出了OSI七层模型。
OSI(Open System Interconnect),即开放式系统互联。OSI网络模型分为七层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。
应用层
应用层由网络应用程序使用(使用互联网的计算机应用)。在应用层中包含几十种协议,这些协议可以活跃在一个应用层上,为各种网络服务提供基础功能,比如:文件传输(FTP)、网上冲浪(HTTP/HTTPS)、电子邮件(SMTP)、虚拟终端(Telnet)等
(就是应用软件使用的协议 ,这些协议主要是规定应用软件如何去进行通信的。 )
表示层
表示层从应用层接收数据,这些数据主要是以字符和数字的形式出现。表示层对这些数据进行以下处理:
翻译:表示层将数据转换成机器可以理解的二进制格式,例如将ASCII码转换成EBCDIC码
压缩:在数据传输之前,表示层为了减少用于表示原始数据的比特数,会对传输的数据进行压缩。压缩可以分为有损压缩和无损压缩。
数据压缩可以减少原始数据所需的存储空间,存储空间的减少可以是数据传输的时间减少。数据压缩对实时视频、音频的传输有很大的帮助
加密/解密:为保证敏感数据的安全,使用SSL(Secure Socket Layer, 安全套接字)协议进行加密/解密。
会话层
会话层对两个会话进程的建立、维持和结束进行协调和管理,对数据的交换进行管理。
会话层使用 API(应用程序编程接口) 为不同的应用提供服务。例如:NetBIOS(网络基本输入输出系统)允许不同计算机上的应用程序相互通信。
在会话或者连接建立连接之前,服务器执行身份验证服务,对身份进行验证。在用户信息被发送到服务器之后,计算机和服务器之间的连接被建立。
- 如果身份验证成功,将检查用户授权,用来确认对文件的访问权限;
- 如果身份验证失败,用户则会被告知无权访问此页面。
会话层会对下载的文件进行跟踪。例如网页包含的文本和图像等,这些文本和图像作为单独的文件存储在Web服务器上。当在Web浏览器中请求网站时,Web浏览器将打开与Web服务器之间的单独对话,来下载这些文本和图像文件。
这些文件以数据包的形式接收,因为一个文件会被分为多个数据包发送,会话层确定数据包是属于哪个文件。
会话层还确定这些数据包将去往何处,在这个例子中,接收到的数据包将发送到Web浏览器。因此会话层对会话管理很有帮助。
网络浏览器会执行应用层,表示层,会话层的所有功能,这也是TCP/IP五层模型出现的原因
传输层
传输层提供了主机应用程序进程之间的端到端的服务,负责将数据可靠地传送到相应的端口(端到端)。
(不同的应用程序使用不同计算机的端口号,同样的应用程序需要使用一样的端口号才能正常通信)
同时,传输层通过分段、流量控制、差错控制来保证通信的可靠性,另外还提供面向有链接和无连接的传输。
-
分段
传输层将从会话层接收到的数据划分为较小的数据单元 – – 段(segment)。每个段包含一个源端口号、目的端口号和序列号。这些信息保证引导每个段传向正确的应用程序,并保证段可以在接收端正确的重新组合成文件
-
流量控制
用于保证传输的最大速率。例如,一个移动设备连接到一个服务器,服务器的传输速率为100Mbps,而移动设备处理数据的速率是10Mbps。当移动设备从服务器下载数据,在刚开始,服务器以50Mbps的速度发送数据,高于移动设备的传输速度。此时移动设备可以通过传输层告知服务器端将数据传输速率降到10Mbps,这样就不会造成数据丢失。再例如,服务器传输数据的速率是5Mbps,移动设备就会告知服务器将传输速率提高至10Mbps,从而保证移动设备的性能。
-
差错控制
如果传输过程中有数据损坏或者丢失,传输层会使用自动重传重新传输丢失或损坏的数据。传输层在每一个数据段中添加一个校验和(checksum),用来找出所接收端接收到的错误的数据段。
-
面向连接传输和无连接传输
传输层主要包含两种协议,TCP(Transmission Control Protocol,传输控制协议)和UDP (User Datagram Protocol,用户数据报协议)。传输层提供两种服务:面向连接的传输和面向无连接的传输。
面向连接的传输通过TCP实现,面向无连接的传输通过UDP来传输。
UDP的传输速度比TCP要快,因为UDP协议不会反馈信息是否正确的传输,而TCP会给出反馈,因此在数据传输出现错误时,使用TCP会重新传输数据。
使用UDP时,是否接收到所有的数据并不重要。例如,流媒体电影、歌曲、游戏、IP语音、TFTP、DNS等。
TCP应用于数据必须完全传递的场合。例如万维网、电子邮件、FTP等
网络层
传输层将数据段传输给网络层,网络层将这些数据从一个网络的计算机传输到另一个网络的计算机。网络层的数据单元称为数据包。
网络层的功能是逻辑寻址、路由和路径确定。
-
逻辑寻址
在网络层进行的IP寻址称为逻辑寻址。网络中的每台计算机都有一个唯一的IP地址。网络层将发送方和接收方的IP地址添加到数据段,形成IP数据包。添加IP地址是为了确保每个数据包可以到达正确的目的地。
-
路由
路由是将数据包从源端移动到目的端的方法,这些方法基于IPv4和IPv6。
假设计算机A和网络1相连,计算机B和网络2相连。当计算机B提出访问FaceBook的请求时,FaceBook的服务器将做出回应,将数据包传输到计算机B。在网络中,每台设备的IP地址是独一无二的,因此这两台计算机都有一个唯一的地址。
Facebook服务器的网络层已经将发送方和接收方的IP地址添加到数据包中,假设掩码使用255.255.255.0,表明IP地址的前三个组合标识网络的地址(Network2的地址),最后一个组合代表主机(计算机2)在当前网络中的地址。基于IP地址和掩码,实现数据在网络中和终端之间的传输。 -
路径选择
计算机可以通过多种方式连接到Internet服务器,从源到目标数据传递的最佳可能路径称为“路径选择”。网络层设备使用的协议有OSPF、BGP(边界网关协议)、IS-IS(中间系统到中间系统),通过这些协议来确定数据传递的最佳可能路径。
数据链路层
数据链路层主要是负责同一个子网内的通信的。例如A、B连接在同一台二层交换机,就属于同一个子网,那么数据帧的通信室是不需要通过网络层的(即三层交换机或者路由器),直接在这台二层交换机就过去了。
我们可以将网络划分成许多子网,我们为每个子网分配一个全网唯一的ID,叫做IP地址,如果主机A想要与主机B通信,我们只需实现如何根据主机B的IP找到主机B所在的子网,剩下的工作交给这个子网去处理就行了。这样就避免了中间设备存储过多的主机信息,而且也实现了单播而非广播的模式。这就是网络层所做的事情。
数据链路层从网络层接收数据包,数据包包含发送方和接收方的IP地址。
寻址方式有两种:逻辑寻址和物理寻址。
逻辑寻址在网络层完成,发送方IP地址和接收方IP地址加入数据段形成数据包。
物理寻址在数据链路层完成,发送方和接收方的MAC地址加入数据包中形成数据帧。
MAC地址是由计算机制造商嵌入到计算机网卡的十二位字母数字号码,每台计算机拥有的MAC地址是唯一的。数据链路层中的数据单元称为“帧”。数据链路层作为软件嵌入到计算机的网卡中,并提供经由本地介质将数据从一台计算机传输到另一台计算机的方法。本地介质包括铜线,光纤或无线信号。
数据链路层拥有两个基本功能 :它允许上层使用帧之类的技术访问通讯介质以及控制数据如何通过传输介质投放和接收(介质访问控制、错误监测)
-
介质访问
考虑两台不同的主机,一台笔记本电脑和一台台式机,这两台主机连接到不同的网络,使用网络层IP协议来相互通信。在本例中,台式机通过网线连接到路由器R1,笔记本电脑通过无线网连接到路由器R2,路由器R1和R2通过一些方式连接到其他地方。
现在台式机向笔记本电脑发送一些数据。首先数据通过连接台式机和路由器R1的传输介质,数据链路层向每个IP数据包的头和尾增添一些信息形成数据帧。路由器R1接收到这个数据帧之后,会将帧解封取得其中的IP数据包,通过数据包中的IP地址找到发送的路径之后,再次添加信息封装成为数据帧,通过最优的路径发送到路由器R2。R2接收到数据帧后解封装,通过IP数据包的IP地址找到请求数据的笔记本电脑后,将数据包再次封装成为无线数据链路帧发送。在笔记本电脑接收到数据帧之后,解封装帧取得IP数据包发送到网络层,最终应用层将接收到数据之后,通过应用层协议将接收到的数据显示在计算机的屏幕上。
因此,网络层或更高级的层能够在数据链路层的帮助下传输数据,即数据链路层向OSI模型中的更高层级提供了对介质的访问。
-
控制介质上数据的接收与投放
用于获取介质中的数据帧的技术称为介质访问控制。连接在公共传输介质上的设备可能有多个,如果同一介质上连接的多个设备同时发送数据,这些数据可能会发生冲突,导致产生一个没有人可以理解的无用信息。为了避免发生冲突,数据链路层会监视传输介质何时是空闲的,这时设备就可以向接收方传递信息,这就是所谓的CSMA(载波侦听多路访问)技术。因此,数据链路层以及介质访问方法控制着数据的传输。
数据帧中包含着用于检测信息是否正确的检验位,导致错误发生的原因是因为传输介质的某些限制(电磁干扰等等)。
物理层
需要传输的数据从应用层分割形成的数据段,到传输层的数据包,到数据链路层的数据帧,再到现在的物理层,是一种二进制序列。
物理层可以将这些二进制序列转换成信号并在传输介质上传输。这些信号可以是铜缆上的电信号,光缆上的光信号或空气中的无线电信号,信号的类型取决于设备之间的传输介质的类型。
在接收端,物理层将接收到的信号,转换成为二进制信号,向数据链路层传输。之后数据链路层将数据帧解封装,将数据包向上传递,最终传递到应用层,在显示器上显示接收到信息
原文链接:https://blog.csdn.net/YangJK86/article/details/113951251