数据封装

OSI参考模型不同层次上的协议在数据封装的帮助下进行通信传输。协议栈中的每层协议都负责在传输数据上增加一个协议头部或尾部,其中包含了使协议栈之间能够进行通信的额外信息。例如,当传输层从会话层接收数据时,它会在将数据传递到下一层之前,增加自己的头部信息数据。

数据封装过程将创建一个协议数据单元(PDU),其中包括正在发送的网络数据,以及所有增加的头部与尾部协议信息。随着网络数据沿着OSI参考模型向下流动,PDU逐渐变化和增长,各层协议均将其头部或尾部信息添加进去,直到物理层时达到其最终形式,并发送给目标计算机。接收计算机收到PDU后,沿着OSI参考模型往上处理,逐层剥去协议头部和尾部,当PDU到达OSI参考模型的最上层时,将只剩下原始传输数据。

数据包这个术语指的是一个完整的PDU,包括OSI参考模型所有层次协议的头部与尾部信息。

作为数据包分析师,我们经常会忽略掉会话层和表示层

wireshark rtp 长度62_应用层


我们试着在计算机上浏览http://www.google.com/。在这个过程中,我们首先必须产生一个请求数据包,从客户端计算机传输到目标服务器上。这里我们假设TCP/IP通信会话已经被建立。

我们从客户端计算机的应用层开始,在我们浏览一个网站时,所使用的应用层协议是HTTP,通过此协议发出请求命令,从google.com下载index.html文件。一旦我们的应用层协议已经确定我们要完成的任务,我们现在关心的是数据包如何发送到目的地。数据包中封装的应用层数据将沿着协议栈传递给传输层。HTTP是一个使用TCP(或在TCP协议之上)的应用层协议,因此传输层中将使用TCP协议来确保数据包的可靠投递。所以一个包括序列号和其他数据的TCP协议头部将被创建,并被添加到数据包中,以确保数据包能够被正确交付。

一个协议在其他协议之上,是因为OSI参考模型的上下层设计。例如HTTP等应用层协议提供了一个特定的服务,并依靠TCP协议来保证服务的可靠交付。正如,DNS协议构架于UDP上,而TCP构架在IP之上。

TCP协议将数据包交给IP协议,也就是在第3层上负责为数据包进行逻辑寻址的协议。IP协议创建一个包含有逻辑寻址信息的头部,并将数据包传递给数据链路层上的以太网,然后以太网物理地址会被添加并存储在以太网帧头中。现在数据包已经完全封装好,然后传递给物理层,在这里数据包变成0、1信号通过网络完成传输。

封装好的数据包将穿越网络线缆,最终到达Google的Web服务器。 Web服务器开始读取数据包,从下往上,这意味着它首先读取数据链路层,从中提取到所包含的物理以太网寻址信息,确定数据包是否是发往这台服务器的。一旦处理完这些信息,第2层头部与尾部的信息将被剥除,并进入第3层的信息处理过程中。

读取IP寻址信息的方式和第2层相同,目的是确认数据包被正确转发,以及数据包未进行分片处理。这些数据也同样被剥离,并交到下一层进行处理。

现在第4层TCP协议信息被读取,以确保数据包是按序到达的。然后第4层报头信息被剥离,留下的只有应用层数据。这些数据会被传递到Web服务器应用程序。为了响应客户端发过来的这个数据包,服务器应该发回一个TCP确认数据包,使客户端知道它的请求已经被接收,并可以等待获取 index.html文件内容了。

所有数据包都会以这个例子中描述的过程进行创建和处理,而无论使用的是哪种协议。

并非每个网络数据包都是从应用层协议产生的,所以你会进一步看到只包含第2层、第3层或第4层协议信息的数据包。