简介
设计链路层的目的:
- 为IP模块发送和接收IP数据报
- 为ARP模块发送ARP请求和接收ARP应答
- 为RARP模块发送RARP请求和接收RARP应答
TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-232串行线路等
以太网和IEEE 802封装
其中链路层封装的源地址和目的地址都是48位(6字节)的MAC地址,ARP和RARP负责对MAC地址和32位IP地址进行互相转换
其中以太网和802主要区别是:
- 以太网首部最后2字节是后续数据的类型,0800代表IP数据报,0806代表ARP数据报,8035代表RARP数据报;而802首部最后2字节是后续数据的字节长度
- 以太网首部之后就是数据,长度为46~1500字节;802首部之后还有一段其他内容,然后才是数据,长度在38~1492字节
以太网封装格式最常见
SLIP:串行线路IP
是一种在串行线路上对IP数据报进行封装的简单形式
- 在IP数据报前后加上END(c0)避免线路噪声被混入数据报,保证报文正确传输
- 将IP报文中的END字符转义为两字节0xdb和0xdc
- 将IP报文中的ESC字符转义为两字节0xdb和0xdd
通过转义避免IP报文中的数据被当成SLIP的特殊字符处理
优点:
- 简单
缺点:
- 每一端必须知道对方IP
- 数据帧中没有类型字段,只支持对IP协议封装
- 数据帧中没有校验和,需要依赖IP层进行校验
压缩的SLIP
简称CSLIP
串行线路速度较低,导致传输的分组通常较小,这种情况下加入20字节的TCP首部和20字节的IP首部会让数据报较大,总共超过40字节。引入CSLIP可将40字节(TCP和IP首部)压缩至3-5字节,提高传输性能
PPP:点对点协议
SLIP协议的进阶版
相比SLIP,PPP的改进:
- 支持封装多种网络层协议
- 数据帧有校验和
- 基于IP协议通信双方可以动态协商IP地址
- 与CSLIP类似,支持压缩TCP和IP首部
- 链路控制协议可以对多个数据链路选项进行设置
环回接口
简称loopback接口,提供与本机通信的一种机制,通常使用ip地址127.0.0.1和主机名localhost
- 传给127.0.0.1和本机ip的数据都会传到环回接口
- 传到环回接口的数据不会进过以太网,而是直接进入IP输入队列,从而被IP层接收处理
- 传给广播或多播地址的数据会复制一份到环回接口。因为广播和多播包含了主机本身
最大传输单元MTU
为了提高网络交互的性能,链路层需要给数据帧设置长度上限,这个上限就是MTU(最大传输单元)
如果IP层数据报比MTU要大,则IP层需要进行数据分片
路径MTU
两台主机之间多个网络,每个网络链路层都有MTU,其中最小MTU就是路径MTU
路径MTU不对称,也就是在两个方向上不一致