《TCP/IP詳解1》筆記(第2章 鏈路層)

weixin_34054866發表於2012-06-27

作用

在TCP/IP協議族中,鏈路層主要有三個目的:(1)為IP模組傳送和接收IP資料包;(2)為ARP模組傳送ARP請求和接收ARP應答;(3)為RARP傳送RARP請求和接收RARP應答。TCP/IP支援多種不同的鏈路層協議,這取決於網路所使用的硬體,如乙太網、令牌環網、FDDI(光纖分散式資料介面)及RS-232序列線路等。

 

乙太網和IEEE 802封裝

乙太網這個術語一般是指數字裝置公司( Digital Equipment Corp.)、英特爾公司和Xerox公司在1982年聯合公佈的一個標準。它是當今TCP/IP採用的主要的區域網技術。它採用一種稱作CSMA/CD的媒體接入方法,其意思是帶衝突檢測的載波偵聽多路接入(Carrier Sense, Multiple Access with Collision Detection)。它的速率為10 Mb/s,地址為48 bit。

IEEE(電子電氣工程師協會)802委員會公佈了一個稍有不同的標準集,其中802.3針對整個CSMA/CD網路,802.4針對令牌匯流排網路,802.5針對令牌環網路。這三者的共同特性由802.2標準來定義,那就是802網路共有的邏輯鏈路控制(LLC)。

 

PPP:點對點協議

PPP,點對點協議修改了SLIP協議中的所有缺陷。PPP包括以下三個部分:

1) 在序列鏈路上封裝IP資料包的方法。PPP既支援資料為8位和無奇偶檢驗的非同步模式(如大多數計算機上都普遍存在的序列介面),還支援面向位元的同步連結。

2) 建立、配置及測試資料鏈路的鏈路控制協議( LCP:Link Control Protocol)。它允許通訊雙方進行協商,以確定不同的選項。

3) 針對不同網路層協議的網路控制協議(NCP:Network Control Protocol)體系。當前RFC定義的網路層有IP、OSI網路層、DECnet以及Apple Talk。例如,IP NCP允許雙方商定是否對報文首部進行壓縮,類似於CSLIP(縮寫詞NCP也可用在TCP的前面)。

 

如何檢測閘道器的MTU

在本機開啟dos視窗,執行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是閘道器IP地址,1472是資料包的長度。請注意,上面的引數是“-l”(小寫的L),而不是“-1”。 如果能ping通,表示資料包不需要拆包,可以通過閘道器傳送出去。 如果出現: Packet needs to be fragmented but DF set. 表示資料包需要拆開來傳送。此時,減少資料包長度,再執行上面的ping命令。從1400到1472之間多試幾次,就能找到合適的資料包長度了。把資料包長度加上資料包頭28位元組,就得到MTU的值。

 

最大傳輸單元MTU 與 路徑MTU

乙太網和802.3對資料幀的長度都有一個限制,其最大值分別是1500和1492位元組。鏈路層的這個特性稱作MTU,最大傳輸單元。不同型別的網路大多數都有一個上限。如果IP層有一個資料包要傳,而且資料的長度比鏈路層的MTU還大,那麼IP層就需要進行分片( fragmentation),把資料包分成若干片,這樣每一片都小於MTU。

當在同一個網路上的兩臺主機互相進行通訊時,該網路的MTU是非常重要的。但是如果兩臺主機之間的通訊要通過多個網路,那麼每個網路的鏈路層就可能有不同的MTU。重要的不是兩臺主機所在網路的MTU的值,而是兩臺通訊主機路徑中的最小MTU。它被稱作路徑MTU。

兩臺主機之間的路徑MTU不一定是個常數。它取決於當時所選擇的路由。而選路不一定是對稱的(從A到B的路由可能與從B到A的路由不同),因此路徑MTU在兩個方向上不一定是一致的。

 

相關文章