MTU對IP協議、UDP協議、TCP協議的影響

認識MTU

    MTU(最大傳輸單元)是指一種通訊協議的某一層上面所能通過的最大數據包大小(以字節爲單位)。最大傳輸單元這個參數通常與通信接口有關(網絡接口卡、串口)。

     以太網幀中的數據長度規定最小46字節,最大1500字節,ARP數據包的長度不夠46字節,要在後面補填充位。最大值1500稱爲以太網的最大傳輸單元(MTU),不同的網絡類型有不同的MTU。

     注:如果一個數據包從以太網路由到撥號鏈路上,數據包長度大於撥號鏈路的MTU了,則需要對數據包進行分片

MTU對IP協議的影響

   由於數據鏈路層MTU的限制,對於較大的IP數據包要進行分包。將較大的IP包分成多個小包,並給每個小包打上標籤,到達對端時再將這些小包按順序重組,拼裝到一起返回給傳輸層。一旦這些小包中任意一個小包丟失,接收端的重組就會失敗。但是IP層不會負責重新傳輸數據。

   在這裏我們需要注意的是,1. IP包會進行分包  2. IP包丟失後,不會負責重新傳輸數據。

   這裏提到ICMP協議,是一個網絡層協議。由於IP協議並不提供可靠傳輸,如果丟包了,IP協議並不能通知傳輸層是否丟包以及丟包的原因,1. ICMP正式確認IP包是否到達目標地址   2. 通知在發送過程中IP包被丟棄的原因。

MTU對UDP協議的影響

   由於UDP數據包不會自已進行分片,一旦UDP攜帶的數據超過1472(1500-20(IP首部)-8(UDP首部)),那麼就會 在網絡層分成多個IP數據報。

  注:這多個IP數據報中任意一個丟失,都會引起接收端網絡層重組失敗。即如果UDP數據包在網絡層被分片,整個數據被丟失的概率就大大增加了。

MTU對UDP協議的影響

    MSS(最大分段大小)

    MSS是TCP裏的一個概念(首部的選項字段中)。MSS是TCP數據包每次能夠傳輸的最大數據分段,TCP報文段的長度大於MSS時,要進行分段傳輸。TCP協議在建立連接的時候通常要協商雙方的MSS值,每一方都有用於通告它期望接收的MSS選項(MSS選項只出現在SYN報文段中,即TCP三次握手的前兩次)。MSS的值一般爲MTU值減去兩個首部大小(需要減去IP數據包包頭的大小20Bytes和TCP數據段的包頭20Bytes)所以如果用鏈路層以太網,MSS的值往往爲1460。而Internet上標準的MTU(最小的MTU,鏈路層網絡爲x2.5時)爲576,那麼如果不設置,則MSS的默認值就爲536個字節。很多時候,MSS的值最好取512的倍數。TCP報文段的分段與重組是在運輸層完成的。

    到了這裏有一個問題自然就明瞭了,TCP分段的原因是MSS,IP分片的原因是MTU,由於一直有MSS<=MTU,很明顯,分段後的每一段TCP報文段再加上IP首部後的長度不可能超過MTU,因此也就不需要在網絡層進行IP分片了。因此TCP報文段很少會發生IP分片的情況。

總結:UDP不會分段,就由IP來分。TCP會分段,當然就不用IP來分了!

參考:https://www.cnblogs.com/yanchengwang/p/5919676.html

 

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