前言
前面介绍了
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
的不同,以及发送到本机的环回地址等。