本章讨论了Internet协议族中的最底层协议,链路层协议。
链路层主要由三个目的:①为IP模块发送和接受IP数据报;②为APP模块发送ARP请求和接受ARP应答;③为RARP发送请求和接受RARP应答。TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。
以太网和IEEE 802.2/802.3的封装格式
在TCP/IP世界中,以太网IP数据报的封装是在RFC 894[Horning 1984]中定义的,IEEE 802
网络的IP数据报封装是在RFC 1042[Postel and Reynolds 1988]中定义的。主机需求RFC要求的每台Internet主机都要与一
1)必须能发送和接受采用RFC 894(以太网)封装格式的分组
2)应该能接受与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。
3)也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以 设置的,而且默认条件下必须是RFC 894分组。
最常使用的封装格式是RFC 894定义的格式。图2-1显示了两种不同形式的封装格式。图中每个方框下面的数字是它们的字节长度。两种帧格式都采用48 bit(6字节)的目的地址和源地址(802.3允许使用16 bit的地址,但一般是48 bit地址)。这就是我们在本书中所称的硬件地址。ARP和RAPP协议对32bit的IP地址和48bit的硬件地址进行映射。
以及SLIP和PPP的封装格式,由于SLIP和PPP经常用于低速的链路,二者都提供了压缩不常变化的公共字段的方法。这使得交互性能得到提高。但这是就不多说了,有兴趣的可以去看<TCP-IP详解>。
环回接口
大多数的产品都支持环回接口,以允许运行在同一台主机上的客户程序和服务器程序通过TCP/IP进行通信,A类网络号127就是为环回接口预留的。根据惯例,大多数系统把IP地址127.0.0.1分配给这个接口,并命名为localhost。一个传给环回接口的IP数据不能在任何网络上出现。
最大传输单元MTU
以太网和802.3对数据帧的长度都有一个限制,其最大值分别是1500和1492字节。链路层的这个特性称作MTU,最大传输单元。不同类型的网络大多数都有一个上限。
如果IP层有一个数据报要传,而且数据的长度比链路层的MTU还大,那么IP层就需要进行分片,把数据报分成若干片,这样每一片都小于MTU。
路径MTU
当在同一个网络上的两台主机互相通信时,该网络的MTU是非常重要的。但是如果两台主机之间的通信需要通过多个网络,那么每个网络的链路层就可能有不同的MTU。重要的是不同两台主机所在网络的MTU的值,重要的是两台通信主机路径中的最小MTU。它被称为路径MTU。
两台主机之间的路径MTU不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径的MTU在两个方向上不一定是一致的。