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定義的格式, 即以太網數據報封裝。


          上圖中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數據報不能在任何網絡上出現。


六、最大傳輸單元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的發現機制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章