1. 程式人生 > >《TCP/IP詳解卷一:協議》資料鏈路層(一)

《TCP/IP詳解卷一:協議》資料鏈路層(一)

引言

        在TCP/IP協議族中,鏈路層主要有三個目的:
  • 為IP模組傳送和接收IP資料報。
  • 為ARP模組傳送ARP請求和接收ARP應答。
  • 為RARP傳送RARP請求和接收RARP應答。 
                         
        TCP/IP支援多種不同的鏈路層協議,這取決於網路所使用的硬體。(乙太網、令牌環網、FDDI、RS-232序列線路)本章將詳細討論乙太網鏈路層協議、兩個序列介面鏈路層協議(SLIP和PPP),以及大多數實現都包含的環回(loopback)驅動程式。

乙太網封裝和IEEE 802封裝

        乙太網(Ethernet)指的是由Xerox公司建立並由Xerox、Intel和DEC公司聯合開發的基帶區域網規範,是當今現有區域網採用的最通用的通訊協議標準。乙太網絡使用CSMA/CD(載波監聽多路訪問及衝突檢測)技術
,並以10Mb/S的速率執行在多種型別的電纜上。         IEEE(電子電氣工程師協會)802委員會公佈了一個標準集。其中802.3針對整個CSMA/CD網路,802.4針對令牌匯流排網路,802.5針對令牌環網路。這三者的共同特性由802.2標準來定義,即802網路共用的邏輯鏈路控制(LLC)。然而,802.2和802.3定義了一個與乙太網不同的幀格式。(注意將乙太網幀與802幀區分開來) 在TCP/IP世界中,乙太網IP資料報的封裝在RFC 894中定義。IEEE 802網路的IP資料報封裝在RFC 1042中定義。在主機需求RFC中要求每一臺Internet主機都與一個10Mb/s的以太電纜連線:
  • 必須能傳送和接收採用RFC 894(乙太網)封裝格式的分組。
  • 應該能接收與RFC 894混合的RFC 1042(IEEE 802)封裝格式的分組。
  • 也許能夠傳送採用RFC 1042格式封裝的分組。如果主機能同時傳送這兩種型別的分組資料,那麼傳送的分組必須是可以設定的,同時預設情況下必須是RFC 894分組。
        其中最常用的封裝格式是RFC 894(乙太網封裝)定義的格式。
        兩種幀格式都採用48bit(6位元組)的目的地址和源地址。這就是在本書中稱為的硬體地址。ARP和RARP協議對32bit的IP地址和48bit的硬體地址進行對映(後續介紹)。接下來的2個位元組在兩種幀格式中互不相同。在802標準定義的幀格式中,長度欄位是指它後續資料的位元組長度,但不包含CRC檢驗碼。乙太網的型別欄位定義了後續資料的型別。幸運的是,802定義的有效長度值與乙太網的有效型別值無一相同。這樣,就可以對兩種幀格式進行區分。同時,802標準定義的幀定義中,型別欄位由後續的子網接入協議(SNAP, Sub-network Access Protocol)給出。
從上圖可知,無論是乙太網封裝格式,還是IEEE 802 封裝格式,在資料鏈路層中傳遞的資料型別主要有三種:IP資料報、ARP請求/應答、RARP請求/應答。         在乙太網幀格式中,型別欄位之後即為資料。而在802幀格式中,跟隨在其後的為3位元組的802.2LLC和5個位元組的SNAP。其中目的服務訪問點( Destination Service Access Point)和源服務訪問點(Source Service Access Point)即後面控制欄位、orgcode的值都為固定值(如圖所示)。CRC欄位用於幀內後續位元組差錯的迴圈冗餘檢驗(也被稱為FCS)(後續介紹)。         802.3標準定義的幀和乙太網的幀都有最小長度要求。802.3規定資料部分長度至少為38位元組,而對於乙太網幀,則最少要求46位元組長度的資料部分。為了保證這一點,可能需要在必要時插入填充位元組。(後續介紹)

尾部封裝

 描述了另一種用於乙太網的封裝格式,稱為尾部封裝。它通過調整IP資料報中欄位的次序來提高效能。將(IP首部和TCP首部)它們移到尾部(在CRC之前),這樣當把資料複製到核心時,就可以把資料幀中的資料部分對映到一個硬體頁面,節約記憶體到記憶體的複製過程(因為TCP資料報的長度為512位元組的整數倍,正好可以用核心中的頁表來處理)。但現在尾部封裝已經遭到反對。這裡僅僅介紹尾部封裝而不討論它。 待續,,,,,,