2.1引言
由上图可以看出,链路层的主要有三个目的:
- 为IP模块发送和接收IP数据报
- 为ARP模块发送ARP请求和接受ARP应答
- 为RARP发送RARP请求和接受RARP应答。
2.2以太网和IEEE802封装
以太网是当今TCP/IP采用的主要的局域网技术。速率为10Mb/s,地址为48bit。
ARP和RARP协议对32bit的IP地址和48bit的硬件地址进行映射。
有两个标准集RFC894,RFC1042。
以太网IP数据报的封装常采用RFC894定义的格式。
CRC字段用于帧内后续字节差错的循环冗余码检验(检验和)
对于以太网帧长度最少为46字节,不足插入填充(pad)字节。
2.3 SLIP 与 CSLIP
SLIP(串行线路IP)全称为Serial Line IP,是一种在串行线路上对IP数据报进行封装的简单形式。
SLIP定义的帧格式:
- IP数据报首尾加上END(0xc0)的特殊字符
- 将IP数据报中的END(0xc0)(若存在)替换为0xdb(SLIP的ESC字符)和0xdc两个字节。
- 将IP数据报中的SLIP的ESC(0xdb)替换为0Xdb和0xdd两个字节。
SLIP缺陷:
- 无法传送本端的IP地址,因此两端均需知道对方的IP地址。
- 数据帧中没有类型字段,无法标识协议类型。
- 数据帧中没有检验和,只能依靠上层协议对错误数据进行纠正。
CSLIP(压缩的SLIP):将SLIP上TCP分组的20字节IP首部和20字节TCP首部压缩到3或5个字节,是CSLIP能在每一端维持16个TCP连接。
2.4 PPP:点对点协议
PPP包括三个部分:
- 串行链路上对IP数据报封装的方法。PPP既支持数据为8位和无奇偶检验的异步模式,还支持面向比特的同步链接。
- 建立、配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。允许通信双方进行协商,确定不同选项。
- 针对不同网络层协议的网络控制协议(NCP: Network Control Protocol)体系。
根据帧中的协议字段确定是哪个协议的数据。
CRC为一个循环冗余检验码。
PPP与SLIP常用于低速的串行链路。
PPP相对SLIP的优点:
- PPP支持在单根串行线路运行多种协议(不只是IP协议)
- 每一帧均有循环冗余检验
- 通信双方可以进行IP地址动态协商(通过IP网络控制协议)
- 对TCP和IP报文首部进行压缩(类似CSLIP)
- 链路控制协议可以对多个数据选项进行设置。代价是每一帧的首部增加3个字节,建立链路时发送几帧协商数据,以及更复杂的实现。
2.5环回接口
环回接口(Loopback Interface)允许在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。
A类网络号127为环回接口预留,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。
一个传给环回接口的IP数据报不能在任何网络上出现。
一般情况下,一旦传输层检测到目的端地址是环回地址时,应该可以省略部分传输层和所有网络层的逻辑操作。但是大多数的产品还是照样完成传输层和网络层的所有过程,只是当IP数据报离开网络层时把它返回给自己。
环回接口处理IP数据报的简单过程:
图中需要注意的地方:
- 传给换回地址(一般是127.0.01)的任何数据均作为IP输入。
- 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。(广播、多播包含主机本身)
- 任何传给该主机IP地址的数据均送到环回接口。
- 任何传给主机本身IP地址的IP数据报一般不出现在相应的网络上。
2.6 最大传输单元MTU
以太网(和802.3)对数据帧的长度均有一个限制,为1500(1492)字节,这个特性称为MTU,最大传输单元。
若IP层有数据报要传送,但数据的长度比链路层的MTU要大,则IP层需要对数据进行分片。
点对点的链路层(SLIP PPP)的MTU是一个逻辑限制,目的是为了提供足够快的响应时间。
查看以太网的MTU:
Windows:netstat -e -v
Linux: netstat -i
2.7 路径MTU
两台通信主机路径中的最小MTU为路径MTU。
路径MTU不一定为常数,取决于选择的路由。选路不一定对称,因此路径MTU在两个方向上不一定是一致的。