前言
前面介绍了
TCP/IP协议族的组成,现在来看最底层的数据链路层。
链路层
链路层目的如下
- 为
IP模块发送和接收IP数据报。 - 为
ARP发送ARP请求和接收ARP应答。 - 为
RARP发送RARP请求和接收RARP应答。
IP报文封装
如下为IEEE 802和以太网的封装,对于不同的封装其会添加额外的信息,如
802封装会在头部添加LLC和SNAP信息,而在尾部会添加CRC信息用于校验。

IP报文串行发送(SLIP)
IP数据报以END 0xc0特殊字符结束,并且在开始处也传入END字符。- 若报文中某个字符为
END,那么需要使用两个连续字节(0xdb 0xdc)进行取代,oxdb称为ESC字符。 - 若报文中某个字符为
ESC字符,那么需要使用两个连续字节(0xdb 0xdd)进行取代。
IP报文压缩发送(CSLIP)
由于串行发送效率较低(传送一个字节需要20个字节的IP首部和20个字节的TCP首部),并且有些通信是交互式的,对时间响应要求高。使用
CSLIP可将40个字节压缩到3到5个字节。
IP报文点对点发送(PPP)
PPP支持IP报文点对点发送,有如下优点。
- 支持单串行线路上运行多种协议。
- 每一帧都有循环冗余校验。
- 通信双方可进行
IP地址动态协商(使用网际控制协议)。 - 对
TCP和IP首部进行压缩。
环回接口
允许运行在同一台主机上的客户程序和服务器程序通过
TCP/IP进行通信(如启动tomcat后,本地访问),其通信地址为127.0.0.1,也称为localhost。当传输层检测到目的端地址是环回地址时,可省略部分传输层和所有网络层的逻辑操作。
- 传给环回地址的数据均被作为
IP输入。 - 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
- 任何传给本机
IP地址的数据均被送到环回接口,不应该出现在网络上。
最大传输单元MTU
以太网数据帧长度为
46~1500,802.3的数据帧长度为38~1492,若IP层有数据报传送,并且大于最大限制,则IP层需要进行分片。
路径MTU
同个网络的两台主机互相通信时,网络的
MTU非常关键,若两个主机之间的通信要通过多个网络时,每个网络的链路层就可能有不同的MTU,两台通信主机网络路径中最小的MTU被称为路径MTU。
- 两台主机间的
MTU不一定为常数,其与当时所选择的路由有关,选路不一定是对称的,因此可能不一致。
总结
本篇博文讨论了数据链路层的一些细节,如不同的封装的
MTU的不同,以及发送到本机的环回地址等。