在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