1.4OSI参考模型下数据封装与通信过程

虽然现实中的网络基本都是TCP/IP,但TCP/IP参考模型在服务、接口与协议的区别上不是很清楚,物理层与数据链路层没有划分开来。而且TCP/IP下通信中,有一些细小的过程不是很清楚,比如在OSI参考模型下,数据是怎样发送又是怎样被接收的,如果出了特别的问题应该从哪一层找原因等用TCP/IP参考模型不容易说清楚。所以本文主要阐述OSI参考模型下发送与接收时每一层的操作,以及对协议、接口、服务等概念的理解。

如图1.2所示,在OSI参考模型中主机要完成所有的七层功能,中间系统只需要完成下三层的功能,也就是物理层、数据链路层、网络层。之前也提到了,按照层次结构来看,所有对等层次之间都遵循相关的协议,进行数据交换,也就是说,对应层次之间协议规定了这个层次如何去构造数据,如何去交换数据,但要注意协议画的是虚线,在对等层之间交换的数据并不是物理上直接到达的,只是逻辑上到达对应的对等层。那么物理上真正通信是如何通信的呢?物理上通信怎么说也得通过链路,通过光信号、电信号、或者电磁波,所以物理层最下边是物理介质,物理介质完成物理信号传输。

那么按照OSI参考模型来看,数据是怎么进行通信的呢?比如A主机要发送一个数据给B,主机A的应用层最先处理数据,应用层处理完交给表示层,表示层交给会话层......,一层一层留下来通过物理介质发送到中间系统,中间系统从物理层把数据接收过来,接收以后要把数据进行还原,还原的时候遵循对等层之间的协议,比如中间系统的物理层还原数据时要遵循和主机A的物理层的协议。逐层还原到网络层。网络层明确数据应该在哪一段连路上传输,然后逐层处理交到物理层,传输到主机B,主机B再逐层还原。
注意:图1.2中实线所描述的过程是数据真正流动的方向,OSI参考模型把这个也叫做实通讯(或物理通讯)。那么虚线看到的是对等层之间的通信。协议规定的是对等层之间如何交换数据,比如应用层,在这一层看来,似乎数据是从主机A的应用层直接送到主机B的应用层。举个例子,我给女朋友(-vv-)写信,我写完信邮寄给女朋友,女朋友收到之后回信,看似好像是我直接和女票通信。事实上是我把信加上信封,按照规定(协议)写上邮政编码等信息,然后交给我们那的邮递员,邮递员逐层往下交,然后通过汽车、火车或者飞机等邮寄,邮寄的时候也是每一环节读取信封上的信息确定该往哪发,最后我女票收到信后,打开看信。所以协议是“水平的”,在传输过程中,相邻层之间交换信息是通过接口把数据交给下一层,或者通过接口向上一层提供服务。

我们从图1.2发现OSI上面四个层是和下面三层不太一样,中间系统实现的功能只到第三层,网络层再往上中间系统理论上就不用实现了。也就意味着上面四层直接从源主机对应到目的主机对应层次,这四层协议规定处理的数据直接到目的主机去处理。我们把这四层叫做端到端层(end-end)。

图1.2 OSI参考模型数据通信过程

 

我们假设撇开中间系统,看源主机A到目的主机B的通信,从顶层来看我们是希望源主机A的用户数据送到目的主机B接收,比如一个文件,或一句话。按照OSI参考模型来看,主机A和主机B都需要实现7层功能。

在OSI参考模型看来,数据通信时,是一层一层处理,逐层封装好,在物理上进行实在的传输:从源主机(SOURCE)的应用层发出来的数据是有一定格式的协议数据单元,称为PDU(protocol data unit)。应用层发给下一层表示层后,在PDU前面加上了本层控制信息,也就是图1.3中的AH,加在头部。图1.3中加了头部PH的A-PDU,更新为本层的PDU,也就是要发给第五层会话层的内容。即A-PDU+PH=P-PDU。上一层向下一层发送PDU,逐层加上本层的头部后成为下一层的PDU。直至发到数据链路层,数据链路层还加一个尾部,也就是DT,起到校验作用,如果数据正确,继续传输,数据错误直接丢掉不继续传输。数据链路层发给物理层后,物理层将PDU转换为二进制编码(比特流),通过硬件转换为信号发送出去。这样源主机七层任务完成。

图1.3右侧是目的主机的数据接收过程:接收到硬件的二进制信号后,物理层转换为PDU发个数据链路层。数据链路层拆掉头部和尾部后,将赤裸的PDU送给网络层。网络层再拆掉头部,送入下一层,逐层拆掉头部,到了送给应用层时,前面不同层添加的头部完全被拆干净,留下原本发送的最原始PDU,也就是用户数据。

图1.3 OSI参考模型数据封装与通信过程

那么这里就有一个问题,为什么要进行数据封装?回答这个问题之前,先来了解一下加了那么多的头和尾,加的都是些什么内容。我们在构造协议数据单元(PDU)时会在头部增加控制信息,这些控制信息主要包括1)地址(Address):用来标识发送端和接收端,源主机得知道数据往哪发,目的主机得知道数据是谁给发的。2)差错检测编码(Error-detecting code): 用于差错检测或纠正。3)协议控制(Protocol control): 实现协议功能的附加信息,如: 优先级(priority)、服务质量(QoS)、 和安全控制等。

posted @ 2018-10-05 00:59  巡山逍遥  阅读(596)  评论(0编辑  收藏  举报