链路层上最常见的封装就是以太网和IEEE 802封装,这里就使用以太网作为讲解的对象。
一、概述
数据链路层属于计算机网络的底层,使用的信道主要有点对点信道和广播信道两种类型。
在TCP/IP协议族中,数据链路层主要有三个目的:
1)为IP模块发送和接收数据
2)为ARP模块发送ARP请求和接收ARP应答
3)为RARP模块发送RARP请求和接收RARP应答
TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网,令牌环网,FDDI(光纤分布式数据接口)及RS-232串行线路等。
数据链路层的协议数据单元——帧:将IP层(网络层)的数据报添加首部和尾部封装成帧。
数据链路层协议有许多种,都会解决三个基本问题,封装成帧,透明传输,差错检测。
.二、以太网和IEEE802的封装
如图所示,显示了两种不同形式的封装格式。最常使用的封装格式是RFC894定义的格式。两种帧格式均采用48bit(6 byte)的目的地址和源地址。
以太网的帧格式才有6字节的目的地址和源头地址。帧长度字段是指它后续数据的字节长度,但不包括CRC校验码。这个长度是提供给上层协议的数据负载,也就是上层协议封装的数据最长度不要超过以太网帧的数据长度。最小数据帧尾46,最大数据帧长为1500.
在分析以太网帧的长度时,也有不同的说法,详见http://blog.csdn.net/yusiguyuan/article/details/22490229。
二、最大传输单元MTU
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。
如果在IP层要传输一个数据报比链路层的MTU还大,那么IP层就会对这个数据报进行分片。一个数据报会被分为若干片,每个分片的大小都小于或者等于链路层的MTU值。当同一网络上的主机互相进行通信时,该网络的MTU对通信双方非常重要。但当主机间要通过很多网络才能通信时,对通信双方最重要的是通信路径中最小的MTU,因为在通信路径上不同网络的链路层MTU不同。通信路径中最小的MTU被称为路径MTU。
网络中一些常见链路层协议MTU的缺省数值如下:
FDDI协议:4352字节
以太网(Ethernet)协议:1500字节
PPPoE(ADSL)协议:1492字节
X.25协议(Dial Up/Modem):576字节
Point-to-Point:4470字节
以太网和802.3对数据帧的长度有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元,不同类型的网络大多都有一个上限,这个值是根据硬件来确定的。
如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据分成若干片,这样每一片就小于MTU,。
三、路径MTU
路径MTU和上述内容类似,只不过是在传输数据的时候需要知道真个路径的最小MTU.