TCP/IP详解(二)链路层

注:以后文章中颜色内容为不必注意,颜色内容为特别注意。

一、概述  

在T C P / I P协议族中,链路层主要有三个目的:

(1)为I P模块发送和接收I P数据报;

(2)为A R P模块发送A R P请求和接收A R P应答;

(3)为R A R P发送R A R P请求和接收R A R P应答。

T C P / I P支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、F D D I(光纤分布式数据接口)及R S-2 3 2串行线路等。


二、以太网和IEEE 802封装

       以太网是当今T C P / I P采用的主要的局域网技术。它采用一种称作C S M A / C D的媒体接入方法,速率为10 Mb/s,地址为48 bit。

       几年后,I E E E8 0 2委员会公布了一个稍有不同的标准集,其中8 0 2 . 3针对整个C S M A / C D网络,8 0 2 . 4针对令牌总线网络,8 0 2 . 5针对令牌环网络。这三者的共
同特性由8 0 2 . 2标准来定义,那就是8 0 2网络共有的逻辑链路控制(L L C)。不幸的是,8 0 2 . 2和8 0 2 . 3定义了一个与以太网不同的帧格式。文献[Stallings 1987]对所有的IEEE 802标准进行了详细的介绍。在T C P / I P世界中,以太网I P数据报的封装是在RFC 894[Hornig 1984]中定义的,IEEE 802网络的I P数据报封装是在RFC 1042[Postel and Reynolds 1988]中定义的。主机需求R F C要求每台I n t e r n e t主机都与一个10 Mb/s的以太网电缆相连接:
1) 必须能发送和接收采用RFC 894(以太网)封装格式的分组。
2) 应该能接收与RFC 894混合的RFC 1042(IEEE 802)封装格式的分组。
3) 也许能够发送采用RFC 1042格式封装的分组。如果主机能同时发送两种类型的分组数据,那么发送的分组必须是可以设置的,而且默认条件下必须是RFC 894分组。

最常使用的封装格式是RFC 894定义的格式, 即以太网数据报封装。

TCP/IP详解(二)链路层_第1张图片

          上图中802标准定义的帧中源地址后的2字节长度与以太网帧中2字节的类型有效取值都不一样,可以利用这一点来区分这两种帧。

          802.3和以太网帧最小长度64字节(包括CRC)。

          两种帧都有最小长度限制,为了保证这一点,必须在不足的空间插入填充(p a d)字节。


三、SLIP:串行线路IP

       S L I P的全称是Serial Line IP。它是一种在串行线路上对I P数据报进行封装的简单形式,在RFC 1055[Romkey 1988]中有详细描述。S L I P适用于家庭中每台计算机几乎都有的R S - 2 3 2串行端口和高速调制解调器接入I n t e r n e t。

       下面的规则描述了S L I P协议定义的帧格式:
       1) IP数据报以一个称作E N D(0 x c 0)的特殊字符结束。同时,为了防止数据报到来之前的线路噪声被当成数据报内容,大多数实现在数据报的开始处也传一个E N D字符(如果有线路噪声,那么E N D字符将结束这份错误的报文。这样当前的报文得以正确地传输,而前一个错误报文交给上层后,会发现其内容毫无意义而被丢弃)。
       2) 如果I P报文中某个字符为E N D,那么就要连续传输两个字节0 x d b和0 x d c来取代它。0 x d b这个特殊字符被称作S L I P的E S C字符,但是它的值与A S C I I码的E S C字符(0 x 1 b)不同。
       3) 如果I P报文中某个字符为S L I P的E S C字符,那么就要连续传输两个字节0 x d b和0 x d d来取代它。


       S L I P是一种简单的帧封装方法,还有一些值得一提的缺陷:
       1) 每一端必须知道对方的I P地址。没有办法把本端的I P地址通知给另一端。
       2) 数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于S L I P,那么它不能同时使用其他协议。

      3 )S L I P没有在数据帧中加上检验和(类似于以太网中的C R C字段)。如果S L I P传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的C R C就显得很重要。

     压缩的SLIP:由于串行线路的速率通常较低(19200 b/s或更低),而且通信经常是交互式的(如Te l n e t和R l o g i n,二者都使用T C P),因此在S L I P线路上有许多小的T C P分组进行交换。为了传送1个字节的数据需要2 0个字节的I P首部和2 0个字节的T C P首部,总数超过4 0个字节。既然承认这些性能上的缺陷,于是人们提出一个被称作C S L I P(即压缩S L I P)的新协议,它在RFC 1144[Jacobson 1990a]中被详细描述。C S L I P一般能把上面的4 0个字节压缩到3或5个字节。它能在C S L I P的每一端维持多达1 6个T C P连接,并且知道其中每个连接的首部中的某些字段一般不会发生变化。对于那些发生变化的字段,大多数只是一些小的数字和的改变。这些被压缩的首部大大地缩短了交互响应时间。


四、 PPP:点对点协议

         P P P,点对点协议修改了S L I P协议中的所有缺陷:

         1) 在串行链路上封装I P数据报的方法。P P P既支持数据为8位和无奇偶检验的异步模式(如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
         2) 建立、配置及测试数据链路的链路控制协议(L C P:Link Control Protocol)。它允许通信双方进行协商,以确定不同的选项。
         3) 针对不同网络层协议的网络控制协议(N C P:Network Control Protocol)体系。当前R F C定义的网络层有I P、O S I网络层、D E C n e t以及A p p l e Ta l k。例如,IP NCP允许双方商定是否对报文首部进行压缩,类似于C S L I P(缩写词N C P也可用在T C P的前面)。


          由于标志字符的值是0 x 7 e,因此当该字符出现在信息字段中时,P P P需要对它进行转义。在同步链路中,该过程是通过一种称作比特填充(bit stuffing )的硬件技术来完成的。在异步链路中,特殊字符0 x 7 d用作转义字符。当它出现在P P P数据帧中时,那么紧接着的字符的第6个比特要取其补码,具体实现过程如下:
         1) 当遇到字符0 x 7 e时,需连续传送两个字符:0 x 7 d和0 x 5 e,以实现标志字符的转义。
         2) 当遇到转义字符0 x 7 d时,需连续传送两个字符:0 x 7 d和0 x 5 d,以实现转义字符的转义。
        3 )默认情况下,如果字符的值小于0 x 2 0(比如,一个A S C I I控制字符),一般都要进行转义。例如,遇到字符0 x 0 1时需连续传送0 x 7 d和0 x 2 1两个字符(这时,第6个比特取补码后变为1,而前面两种情况均把它变为0)。

       与S L I P类似,由于P P P经常用于低速的串行链路。P P P比S L I P具有下面这些优点:

       (1) PPP支持在单根串行线路上运行多种协议,不只是I P协议;

       (2) 每一帧都有循环冗余检验;

       (3) 通信双方可以进行I P地址的动态协商(使用I P网络控制协议);

       (4) 与C S L I P类似,对T C P和I P报文首部进行压缩;

       (5) 链路控制协议可以对多个数据链路选项进行设置。


五、环回接口

       大多数系统把I P地址1 2 7 . 0 . 0 . 1分配给这个接口,并命名为l o c a l h o s t。一个传给环回接口的I P数据报不能在任何网络上出现。

TCP/IP详解(二)链路层_第2张图片

六、最大传输单元MTU

        正如在图2 - 1看到的那样,以太网和8 0 2 . 3对数据帧的长度都有一个限制,其最大值分别是1 5 0 0和1 4 9 2字节。链路层的这个特性称作M T U,最大传输单元。不同类型的网络大多数都有一个上限。


          路径MTU:两台通信主机路径中的最小M T U。两台主机之间的路径M T U不一定是个常数。它取决于当时所选择的路由。而选路不一定是对称的(从A到B的路由可能与从B到A的路由不同),因此路径M T U在两个方向上不一定是一致的。有路径M T U的发现机制。

你可能感兴趣的:(c,网络,测试,NetWork)