TCP/IP 卷Ⅰ协议-数据链路层
链路层
简介:从前一章节可以看出,
TCP/IP协议族
中,链路层主要有三个目的:
- 为
IP模块
接收和发送数据报 - 为
ARP模块
发送ARP
请求和接收ARP
应答 - 为
RARP模块
发送RARP
请求和接收RARP
应答
TCP/IP
支持多种类型的链路层协议,这取决于网络所使用的硬件,如以太网
、令牌环网
等。
本文主要讨论的是以太网链路层协议,两个串行接口链路层协议(SLIP
和 PPP
),以及大部数实现都包含的环回(loop back
) 驱动程序。
1.、以太网
和IEEE 802
封装
在TCP/IP族中,以太网IP数据报的封装是在 RFC 894中定义的,IEEE 802
网络的IP数据报分装实在RFC 1042
中定义的。主机需求RFC要求每台Internet主机都与一个10Mb/s
的以太网电缆相连接:
- 必须能发送和接收采用
RFC 894
封装格式的分组 - 应该能接收与
RFC 894
混合的RFC 1042
封装格式的分组 - 也许能够发送采用
RFC 1042
格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置,而且默认条件下必须是RFC 894
分组。
最常使用的封装格式是RFC 894
定义的格式。
封装格式下图显示了两种不同形式的封装格式;
两种帧格式都采用48bit
(6字节)的目的地址和源地址,这就是我们在本书中所称的硬件地址。ARP
和RARP
对32 bit
的IP地址
和48 bit
的硬件地址
进行映射;
接下来的两个字节在两种帧格式中互不相同。在802
标准定义的帧格式中,长度字段表示它后续字段的字节长度,但不包括CRC
检验码。以太网的类型字段的定义了后续数据的类型。在802
标准定义的帧格式中,类型字段则由后续的子网接入协议( Sub-network Access Protocol,SNAP
)的首部给出。幸运的是,802
定义的有效长度值与以太网的有效类型值无一相同,这样,就可以对两种帧格式进行区分.
在以太网帧格式中,类型字段之后就是数据;而在 802
帧格式中,跟随在后面的是 3字节的802.2 LLC和5字节的802.2 SNAP。目的服务访问点( Destination Service Access Point,D S A P
)和源服务访问点(Source Service Access Point, SSAP
)的值都设为0xaa
。Ctrl
字段的值设为3。随后的3个字节orgcode
都置为0。再接下来的2个字节类型字段和以太网帧格式一样(其他类型字段值可以参见 RFC 1340
[Reynolds and Postel 1992])。CRC
字段用于帧内后续字节差错的循环冗余码检验(检验和)(它也被称为FCS或帧检验序列
)。802.3
标准定义的帧和以太网的帧都有最小长度要求。802.3
规定数据部分必须至少为 38字节,而对于以太网,则要求最少要有 46字节。为了保证这一点,必须在不足的空间插入填充(pad
)字节。在开始观察线路上的分组时将遇到这种最小长度的情况。在本书中,我们在需要的时候将给出以太网的封装格式,因为这是最为常见的封装格式。
2、尾部封装
现在已经遭到反对,故不再讲解;
3、SLIP
:串行线路IP
SLIP
全称为:Serial Line Ip
。它是一种在串行线路上对IP数据报进行封装的简单形式,
它的要求如下:
- IP数据报以一个称作
END (0xc0)
的特殊字符结束;同时为防止线程噪声的干扰,大多数实现在数据报的开始也加入一个END
字符。 - 如果IP报文中含有
END
字符,则使用连续传输两个字节0xdb
(也被称为SLIP
的ESC
字符)和0xdc
来取代它. - 如果报文中某个字符为
SLIP
的ESC
字符,那么就要连续传输两个字节0xdb
和0xdd
取代它。
一个简单的例子如下:
SLIP
SLIP
是一种简单的帧封装方法,还有一些值得一提的缺陷:
- 每一端都必须知道对方的IP地址,没有办法把本端的IP地址通知给另一端。
- 数据帧中没有类型字段,类似于以太网中的类型字段,如果一条串行线路用于
SLIP
,它就不能同时使用其他协议; -
SLIP
没有校验和,类似于以太网的CRC
字段,如果传输报文受到线路噪声影响而发生错误,只能通过上层协议来实现。
4、PPP
:点对点协议
点对点协议,修改了SLIP
协议中的所有缺陷;
5、环回接口
大多是产品都支持环回接口,以允许运行在同一台主机上的客户程序与服务器程序通过TCP/IP进行通信。A 类网络好 127就是为环回接口预留的。大多显示系统把IP 地址为 127.0.0.0
分配给环回接口,命名为localhost
。
一旦传输层检测到目的端地址为环回地址时,可以省掉部分传输层与所有网络层的逻辑操作。
环回接口下面时环回接口处理IP数据报的简单过程:
关键点:
- 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
- 任何传给该主机IP地址的数据均送到环回接口。
- 传给环回地址的任何数据均作为IP输入。
6、最大传输单元 MTU
以太网和802.3 对数据帧的长度都有一个限制,其最大值分别为1500 和1492字节。链路层的这个特性称作MTU
,最大传输单元。
如果IP层有一个数据报长度比链路层的MTU
要大,则要对该数据报进行分片操作,要求每一片都小于MTU
7、路径MTU
当在同一网络上的两台主机进行互相通信时,该网络的MTU
就会很重要了。此时,两台通信主机路径中的最小MTU
,被称为此路径的路径MTU
。
详细内会在后续章节进行解读;
8、穿行线路吞吐量计算
线路速度为 V b/s,而一个字节为 a bit ,再加上其实和结束 bit,则线路的速率为 v= V/(a+2) B/s. 而一个分组为 m 字节,则需要时间为: m/v ms;