一、 概述
本章討論了Internet協議族中的最底層協議,鏈路層協議。我們比較了以太網和IEEE802.2/802.3的封裝格式,以及SLIP和PPP的封裝格式。由於SLIP和PPP經常用於低速的鏈路,二者都提供了壓縮不常變化的公共字段的方法。這使交互性能得到提高。
大多數的實現都提供環回接口。訪問這個接口可以通過特殊的環回地址,一般爲127.0.0.1。也可以通過發送IP數據報給主機所擁有的任一IP地址。當環回數據回到上層的協議棧中時,它已經過傳輸層和IP層完整的處理過程。
二、 鏈路層功能
在TCP/IP協議族中,鏈路層主要有三個目的:
- 爲IP模塊發送和接收IP數據報;
- 爲ARP模塊發送ARP請求和接收ARP應答;
- 爲RARP發送RARP請求和接收RARP應答。
三、 以太網和IEEE 802封裝
圖1. IEEE802.2/802.3和以太網的封裝格式
IEEE802.2標準幀比以太網幀多一個802.2 LLC和802.2 SNAP域。
802.2規定幀數據部分至少爲38字節,而以太網則要求至少爲46字節。
四、 SLIP:串行線路IP
SLIP(Serial Line IP,串行線路IP),它是一種在串行線路上對IP數據報進行封裝的簡單形式。
下面的規則描述了SLIP協議定義的幀格式:
1) IP數據報以一個稱作END(0xc0)的特殊字符結束。大多數實現在數據報的開始處也傳一個END字符。
2) 如果IP報文中某個字符爲END,那麼就要連續傳輸兩個字節0xdb和0xdc來取代它。
3) 如果IP報文中某個字符爲SLIP的ESC字符,那麼就要連續傳輸兩個字節0xdb和0xdd來取代它。
圖2. SLIP報文的封裝
SLIP是一種簡單的幀封裝方法,還有一些值得一提的缺陷:
- 每一端必須知道對方的IP地址。沒有辦法把本端的IP地址通知給另一端。
- 數據幀中沒有類型字段(類似於以太網中的類型字段)。如果一條串行線路用於SLIP,那麼它不能同時使用其他協議。
- SLIP沒有在數據幀中加上檢驗和(類似於以太網中的CRC字段)。
五、 PPP:點對點協議
PPP(Point-to-Point Protocol),點對點協議修改了SLIP協議中的所有缺陷。PPP包括以下三個部分:
- 在串行鏈路上封裝IP數據報的方法。PPP既支持數據爲8位和無奇偶檢驗的異步模式,還支持面向比特的同步鏈接。
- 建立、配置及測試數據鏈路的鏈路控制協議(Link Control Protocol)。它允許通信雙方進行協商,以確定不同的選項。
- 針對不同網絡層協議的網絡控制協議(Network Control Protocol)體系。
PPP協議對數據的具體實現過程如下:
- 當遇到字符0x7e時,需連續傳送兩個字符: 0x7d和0x5e,以實現標誌字符的轉義。
- 當遇到轉義字符0x7d時,需連續傳送兩個字符: 0x7d和0x5d,以實現轉義字符的轉義。
- 默認情況下,如果字符的值小於0x20(比如,一個ASCII控制字符),一般都要進行轉義。
圖3. PPP數據幀的定義
PPP的幀格式與SLIP幀格式相比只增加了3個額外的字節:1個字節留給協議字段,另外2個給CRC字段。
PPP幀封裝卻具有如下方面的優勢:
- PPP支持在單根串行線路上運行多種協議,不只是IP協議;
- 每一幀都有循環冗餘檢驗;
- 通信雙方可以進行IP地址的動態協商(使用IP網絡控制協議);
- 與CSLIP類似,對TCP和IP報文首部進行壓縮;
- 鏈路控制協議可以對多個數據鏈路選項進行設置。
六、 環回接口
環回接口( Loopback Interface),以允許運行在同一臺主機上的客戶程序和服務器程序通過TCP/IP進行通信。
其對IP數據報的處理過程如下圖所示。
圖4. 環回接口處理IP數據報的過程
根據上圖,環回接口數據輸入:
- 傳給環回地址(一般是127.0.0.1)的任何數據均作爲IP輸入。
- 傳給廣播地址或多播地址的數據報復制一份傳給環回接口,然後送到以太網上。
- 任何傳給該主機IP地址的數據均送到環回接口。
七、 MTU
MTU(Maximum Transfer Unit,最大傳輸單元),是指鏈路層對傳輸的數據幀長度的上限限制。
以太網的MTU爲1500,而IEEE802.2/802.3幀的MTU爲1492。
線路MTU爲兩臺通信主機線路中的最小MTU值。
(完)