TCP/IP-数据链路层

前言

前面介绍了TCP/IP协议族的组成,现在来看最底层的数据链路层。

链路层

链路层目的如下

  • IP模块发送和接收IP数据报。
  • ARP发送ARP请求和接收ARP应答。
  • RARP发送RARP请求和接收RARP应答。

IP报文封装

如下为IEEE 802和以太网的封装,对于不同的封装其会添加额外的信息,如802封装会在头部添加LLCSNAP信息,而在尾部会添加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地址动态协商(使用网际控制协议)。
  • TCPIP首部进行压缩。

环回接口

允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信(如启动tomcat后,本地访问),其通信地址为127.0.0.1,也称为localhost。当传输层检测到目的端地址是环回地址时,可省略部分传输层和所有网络层的逻辑操作。

  • 传给环回地址的数据均被作为IP输入。
  • 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
  • 任何传给本机IP地址的数据均被送到环回接口,不应该出现在网络上。

最大传输单元MTU

以太网数据帧长度为46~1500802.3的数据帧长度为38~1492,若IP层有数据报传送,并且大于最大限制,则IP层需要进行分片。

路径MTU

同个网络的两台主机互相通信时,网络的MTU非常关键,若两个主机之间的通信要通过多个网络时,每个网络的链路层就可能有不同的MTU,两台通信主机网络路径中最小的MTU被称为路径MTU

  • 两台主机间的MTU不一定为常数,其与当时所选择的路由有关,选路不一定是对称的,因此可能不一致。

总结

本篇博文讨论了数据链路层的一些细节,如不同的封装的MTU的不同,以及发送到本机的环回地址等。