数据链路层
1. 功能
(1) 为IP模块发送和接收IP数据报
(2) 为ARP模块发送ARP请求和接收ARP应答;
(3) 为RARP发送RARP请求和接收RARP应答
TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI等
我这里主要写关于以太网有关的协议。
2. 以太网和IEEE 802封装
现在我们使用的主要的以太网,它以简单、易用在和其他局域网技术竞争中存活了下来,之后,IEEE802委会便公布了一个稍有不同的标准集,其中802.3针对整个CSMA/CD网络,802.4针对令牌总线网络,802.5针对令牌环网络。
报文格式
从图中可以看到 以太网的封装格式要比802.3的封装格式要简单,包括目的地址、源地址、类型、数据和CRC检验码。
目的地址: 目标主机的MAC地址
源地址: 源MAC地址
类型: 该字段用于表示数据字段中封装了上层的那种协议,如0x0800 代表IP协议帧;0X0806代表ARP协议帧
数据: 数据最小长度必须为46字节保证帧长至少为64字节,数据字段的最大长度为1500字节,如果不够 会发生字节填充
3.PPP:点对点协议
PPP协议包括以下三个部分:
1) 在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无就校验的异步模式,还支持面向比特的同步连接。
2)建立、配置及测试数据链路的链路控制协议(LCP)。它允许通信双方进行协商,以确定不同的选项
3) 针对不同网络层协议的网络控制协议(NCP)体系。当前RFC定义的网络层有IP、OSI网络层
PPP数据的每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一个值为0x03的控制字节。
在协议字段中,类似于以太网中类型字段的功能。
当值为0x0021时,表示信息字段是一个IP数据报;
当值为0xc021时,表示信息字段是链路控制数据;
当值为0x8021时,表示信息字段是网络控制数据。
CRC字段(或FCS,帧检验序列)是一个循环冗余检验码,以检测数据帧中的错误。
由于标志字符的值是 0x7e,因此当该字符出现在信息字段中时, PPP需要对它进行转义。
在同步链路中,该过程是通过一种称作比特填充 。在异步链路中,特殊字符 0 x 7 d用作转义字符。当它出现在 PPP数据帧中时,那么紧接
着的字符的第6个比特要取其补码,具体实现过程如下:
- 当遇到字符0x7e时,需连续传送两个字符: 0x7d和0x5e,以实现标志字符的转义。
- 当遇到转义字符0x7d时,需连续传送两个字符: 0x7d和0x5d,以实现转义字符的转义。
3 ) 默认情况下,如果字符的值小于 0x20(比如,一个ASCI I控制字符),一般都要进行转
义。例如,遇到字符0x01时需连续传送0x7d和0x21两个字符(这时,第6个比特取补码后变为
1,而前面两种情况均把它变为 0)。
4 .最大传输单元(MTU)
以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输丹云。不同类型的网络大多数都有一个上限。
如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片(fragmentation),把数据分成若干片,这样每一篇都小于MTU