在TCP/IP协议簇中,链路层主要有三个目的:
⑴ 为IP模块发送和接收IP数据报。
⑵ 为ARP模块发送ARP请求和接收ARP应答。
⑶ 为RARP发送RARP请求和接收RARP应答。
以太网与IEEE802.3的比较
以太网是DEC,Intel,Xerox公司在1982年联合公布的一个标准。它是当今TCP/IP采用的主要的LAN技术。以太网的核心思想是CSMA/CD(Carrier Sense,Multiple Access with Collision Detection)。它的速率是10Mb/s,地址为48bit。
IEEE802委员会发布了一个与以太网稍有不同的标准集。其中802.3针对CSMA/CD,802.4针对TokenBus,802.5针对TokenRing。这三者的共同特性由802.2标准定义,那就是802网络共有的逻辑链路控制(LLC)。
以太网和IEEE802不同的帧格式
由于以太帧最小为46字节,所以在不足的空间插入填充字节PAD
目的地址&源地址:48bit,6字节。
长度:指它后序数据的字节长度(不包括CRC码)。
DSAP:目的服务访问点,值为0xaa。
SSAP:源服务访问点,值为0xaa。
Ctrl:值置为3。
Org code:3位均置为0。
类型:与以太网类型字段作用相同。由SNAP的首部给出。0800为IP,0806为ARP,8035为RARP。
CRC:用于帧内后续字节差错的循环冗余校验。
802.3规定数据部分至少为38字节,而以太网则要求最少为46字节。(所差8字节为802.3帧内的802.2LLC和802.2SNAP字段,以太网的类型字段位置在802.3帧中由长度字段代替,而802.3帧中的类型字端则由802.2SNAP字段的头三位给出)。
SLIP与PPP
SLIP的全称为Serial Line IP(串行线路IP)。它是一种在串行线路上对IP数据报进行封装的简单形式。
SLIP协议定义的帧格式规则:
⑴ IP数据报以一个称作END(0xc0)的特殊字符结束。同时为了防止数据报传输之前的线路噪音被误认为是数据报内容,在数据报开始处添加一个END字符。
⑵ 如果IP数据中含有END字符,就连续传输0xdb和0xdc来取代它。0xdb是SLIP的ESC字符,但它的值与ASCⅡ码中的ESC(0x1b)不同。
⑶ 如果IP数据中含有ESC字符,就连续传输0xdb和0xdd来取代它。
被封装前的IP数据报:
SLIP的缺陷:
⑴ 每一端必须知道对端的IP地址,没有办法把本端IP地址传递给对端。
⑵ 数据帧中无类型字段,当一条串行线路使用SLIP时则不能使用其他协议。
⑶ SLIP数据帧中无checksum,只能依靠上层协议来发现和纠正错误。
压缩的SLIP(CSLIP):
在SLIP线路上有许多小的TCP分组进行交换,为传送1个字节的数据需要20个字节的IP首部和20个字节的TCP首部。CSLIP能把这40个字节压缩到3或5个字节。这些被压缩的首部大大缩短了交互响应时间。
PPP协议
PPP协议修改了SLIP协议中的所有缺陷。PPP包括以下三个部分:
⑴ PPP在串行链路上封装IP数据报既支持数据为8位和无奇偶校验的异步模式,还支持面向比特的同步链接。
⑵ 通过LCP(链路控制协议)允许双方进行协商。
⑶ 通过NCP(网络控制协议)允许双方在网络层上进行协商。
PPP帧以标志字符0x7e开始和结束,紧接着是一个值为0xff的地址字节,然后是一个值为0x03的控制字节。
PPP的转义字符:
⑴ 由于标志字符是0x7e,当它出现在信息字段中时,需要连续传送0x7d和0x5e来替代它。
⑵ 当在信息字段中遇到0x7d时,需要连续传送0x7d和0x5d来替代它。
⑶ 默认情况下,如果字符的值小于0x20,需要连续传送0x7d和0x21来替代它。
这样做的原因是由于双方主机的串口驱动程序或Modem会把这些特定的字符解释成特殊的含义,防止与其它控制字符起冲突或帧被解释的不正确。
PPP的压缩:
PPP的压缩可以减少每一帧的字节数,降低应用程序的交互时延。
通过LCP,大多数的产品通过协商可以省略标志位和地址位,并把协议字段由2字节减少到1字节。这样一来,与SLIP相比,只增加了3个字节(协议字段和CRC校验)。此外,通信双方通过NCP可以协商采用报文首部压缩,减小IP和TCP首部长度。
PPP与SLIP相比具有下列优点:
⑴ PPP支持在单根串行线路上运行多种网络层协议。
⑵ 每一帧都有CRC校验。
⑶ 通信双方可以用NCP进行IP地址的动态协商。
⑷ 可以类似于CSLIP对TCP和IP首部进行压缩。
⑸ LCP可以对多个数据链路选项进行设置。
Loopback接口
通过Loopback接口允许同一台主机上的客户程序和服务器程序通过TCP/IP进行通信。一个传给环回接口的IP数据报不能在任何网络上出现。
环回接口处理IP数据报的过程:
MTU
以太网和802.3对数据帧长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,即最大传输单元。不同类型的大多数网络都有一个上限。
如果IP层有一个数据报要传,并且数据的长度比链路层的MTU大,那么IP层就需要进行分片,把数据报分为若干片,使每一片都小于MTU。
点对点的链路的MTU是一个逻辑限制而非网络介质的物理限制。其目的是为交互使用提供足够快的响应时间。
MTU分为接口MTU和路径MTU。接口MTU为所指定的接口所允许的发送最大的数据包的值。路径MTU指两台通信主机路径中最小的MTU值。路径MTU是非对称的,它取决于当时所选择的路由。而选路不一定是对称的。所以它在两个方向上不一定是一致的。
参考书籍:
Stevens,W.R.TCP/IP Illustrated,Vol.1.Reading
Comer,D.E.Internetworking with TCP/IP,Vol.1
Jeff Doyle.Routing TCP/IP Vol.1 Second Edition