TCP/IP 卷Ⅰ协议-数据链路层

链路层

简介:从前一章节可以看出,TCP/IP协议族中,链路层主要有三个目的:

  1. IP模块接收和发送数据报
  2. ARP模块发送ARP请求和接收ARP应答
  3. RARP模块发送RARP请求和接收RARP应答

TCP/IP支持多种类型的链路层协议,这取决于网络所使用的硬件,如以太网令牌环网等。
本文主要讨论的是以太网链路层协议,两个串行接口链路层协议(SLIPPPP ),以及大部数实现都包含的环回(loop back) 驱动程序。

1.、以太网IEEE 802封装

在TCP/IP族中,以太网IP数据报的封装是在 RFC 894中定义的,IEEE 802网络的IP数据报分装实在RFC 1042中定义的。主机需求RFC要求每台Internet主机都与一个10Mb/s的以太网电缆相连接:

  1. 必须能发送和接收采用RFC 894封装格式的分组
  2. 应该能接收与RFC 894混合的RFC 1042封装格式的分组
  3. 也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置,而且默认条件下必须是RFC 894分组。

最常使用的封装格式是RFC 894定义的格式。

下图显示了两种不同形式的封装格式;

TCP/IP 卷Ⅰ协议-数据链路层_第1张图片
封装格式

两种帧格式都采用48bit(6字节)的目的地址源地址,这就是我们在本书中所称的硬件地址。ARPRARP32 bitIP地址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)的值都设为0xaaCtrl字段的值设为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数据报进行封装的简单形式,

它的要求如下:

  1. IP数据报以一个称作 END (0xc0) 的特殊字符结束;同时为防止线程噪声的干扰,大多数实现在数据报的开始也加入一个END字符。
  2. 如果IP报文中含有END字符,则使用连续传输两个字节 0xdb (也被称为SLIPESC字符)和0xdc来取代它.
  3. 如果报文中某个字符为SLIPESC字符,那么就要连续传输两个字节0xdb0xdd取代它。

一个简单的例子如下:


TCP/IP 卷Ⅰ协议-数据链路层_第2张图片
SLIP

SLIP是一种简单的帧封装方法,还有一些值得一提的缺陷:

  1. 每一端都必须知道对方的IP地址,没有办法把本端的IP地址通知给另一端。
  2. 数据帧中没有类型字段,类似于以太网中的类型字段,如果一条串行线路用于SLIP,它就不能同时使用其他协议;
  3. SLIP没有校验和,类似于以太网的CRC字段,如果传输报文受到线路噪声影响而发生错误,只能通过上层协议来实现。

4、PPP:点对点协议

点对点协议,修改了SLIP协议中的所有缺陷;

5、环回接口

大多是产品都支持环回接口,以允许运行在同一台主机上的客户程序与服务器程序通过TCP/IP进行通信。A 类网络好 127就是为环回接口预留的。大多显示系统把IP 地址为 127.0.0.0分配给环回接口,命名为localhost
一旦传输层检测到目的端地址为环回地址时,可以省掉部分传输层与所有网络层的逻辑操作。

下面时环回接口处理IP数据报的简单过程:

TCP/IP 卷Ⅰ协议-数据链路层_第3张图片
环回接口

关键点

  1. 传给广播地址或多播地址的数据报复制一份传给环回接口,然后送到以太网上。
  2. 任何传给该主机IP地址的数据均送到环回接口。
  3. 传给环回地址的任何数据均作为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;

你可能感兴趣的:(TCP/IP 卷Ⅰ协议-数据链路层)