数据封装
数据包利用网络在不同设备之间传输时,为了可靠和准确地发送到目的地,并且高效地利用传输资源(传输设备和传输线路),事先要对数据包进行拆分和打包,在所发送的数据包上附加上目标地址,本地地址,以及一些用于纠错的字节,安全性和可靠性较高时,还要进行加密处理等等。这些操作就叫数据封装。而对数据包进行处理时通信双方所遵循和协商好的规则就是协议。与邮寄物品相比,数据包本身就如同物品,而封装就如同填写各种邮寄信息,协议就是如何填写信息的规定。
应用层 数据PDU
传输层 数据Segment
网络层 数据Packet
网络接口层 数据Frame
Bit
数据封装的原理是什么?
- 数据封装是指将协议数据单元(PDU)封装在一组协议头和尾中的过程。在OSI7层参考模型中,每层主要负责与其它机器上的对等层进行通信。该过程是在“协议数据单元”(PDU)中实现的,其中每层的 PDU一般由本层的协议头、协议尾和数据封装构成。
- 每层可以添加协议头和尾到其对应的 PDU 中。协议头包括层到层之间的通信相关信息。协议头、协议尾和数据是三个相对的概念,这主要取决于进行信息单元分析的各个层。
- 例如,传输头(TH)包含只有传输层可以看到的信息,而位于传输层以下的其它所有层将传输头作为各层的数据部分进行传送。在网络层,一个信息单元由层3协议头(NH)和数据构成;而数据链路层中,由网络层(层3协议头和数据)传送下去的所有信息均被视为数据。换句话说,特定 OSI 层中信息单元的数据部分可能包含由上层传送下来的协议头、协议尾和数据。
- 网络分层和数据封装过程看上去比较繁杂,但又是相当重要的体系结构,它使得网络通信实现模块化并易于管理。
数据封装的过程
数据封装的过程大致如下:
- 用户信息转换为数据,以便在网络上传输;
- 数据转换为数据段,并在发送方和接收方主机之间建立一条可靠的连接;
- 数据段转换为数据包或数据报,并在报头中放上逻辑地址,这样每一个数据包都可以通过互联网络进行传输;
- 数据包或数据报转换为帧,以便在本地网络中传输。在本地网段上,使用硬件地址唯一标识每一台主机;
- 帧转换为比特流,并采用数字编码和时钟方案。
终端之间的通信
- 数据链路层控制数据帧在物理链路上传输。
数据包在以太网物理介质上传播之前必须封装头部和尾部信息。封装后的数据包称为数据帧,数据帧中封装的信息决定了数据如何传输。
以太网上传输的数据帧有两种格式,选择哪种格式由TCP/IP协议簇中的网络层决定。
帧格式
- 以太网上使用两种标准帧格式,第一种是上世纪80年代初提出的DIX v2格式,即Ethernet II帧格式。EthernetII后来被IEEE 802标准接纳,并写进了IEEE 802.3x-1997的3.2.6节。第二种是1983年提出的IEEE802.3格式。这两种格式的主要区别在于Ethernet II格式中包含一个Type字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理,IEEE 802.3格式中,同样的位置是长度字段。
- 不同的Type字段值可以用来区别这两种帧的类型,当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE802.3格式。当Type字段值大于等于1536(或者十六进制的0x0600)时,帧使用的是Ethernet II格式。以太网中大多数的数据帧使用的是Ethernet II格式。
- 以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接收者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性。
Ethernet_II 帧格式
- 以太网数据帧的长度在64-1518字节之间。
Ethernet_II 的帧中各字段说明如下:
- DMAC(Destination MAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。
- SMAC(Source MAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。
- 类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为 0x0800的帧代表IP协议帧;类型字段取值为0806的帧代表ARP协议帧。
- 数据字段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。
- 循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节。
IEEE802.3帧格式
- IEEE802.3帧长度字段值小于等于1500(0x05DC)。
IEEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。
- Length字段定义了Data字段包含的字节数。
- 逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。 逻辑链路控制LLC(Logical Link Control)由目的服务访问点DSAP(Destination Service Access Point)、源服务访问点SSAP(Source Service Access Point)和Control字段组成。
- SNAP(Sub-network Access Protocol)由机构代码(Org Code)和类型(Type)字段组成。Org Code三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
1)当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
2)当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。
3)DSAP和SSAP其他的取值均为纯IEEE802.3帧。
数据帧传输
以太网在二层链路上通过MAC地址来唯一标识网络设备,并且实现局域网上网络设备之间的通信。MAC地址也叫物理地址,大多数网卡厂商把MAC地址烧入了网卡的ROM中。发送端使用接收端的MAC地址作为目的地址。以太帧封装完成后会通过物理层转换成比特流在物理介质上传输。
比特流其实就是二进制流,其实在介质就是以电流的形式传输,以电流的高低电平的形式。