前言windows
在學習TCP分段與IP分片時、心有所感想把以前學習過的知識串聯起來。網絡
數據分段發生在傳輸層、分片發生在網絡層。ide
相關術語:學習
MTU(Maximum Transmission Unit,MTU),最大傳輸單元大數據
以太網和802.3對數據幀的長度都有一個限制,其最大 值分別是1500和1492個字節。鏈路層的這個特性稱做MTU。spa
MSS(Maxitum Segment Size)最大分段大小的縮寫,是TCP協議裏面的一個概念blog
MSS就是TCP數據包每次可以傳輸的最大數據分段。爲了達到最佳的傳輸效能TCP協議在創建鏈接的時候一般要協商雙方的MSS值。
get
1.分段的前提(TCP)it
傳輸屋接收到上層傳過來的數據若是 大於 > 1500-20-20(字節)
io
2.分片的前提(IP)
若是IP層有一個數據要發送,且數據的長度比鏈路層的 MTU還大,那麼IP層就要進行分片(fragmentation),把數據報分紅若
乾片,這樣每個分片都小於MTU。
咱們知道一般:
TCP/IP 報頭 一般狀況下爲20字節.而ICMP 報頭爲8字節.
請參考以下截圖:
IP報頭
TCP報頭
ICMP 報頭
實例演示:
實現環境:windows 7
咱們嘗試驗證一下 ICMP報文最大=1472字節=1500-20字節(IP報頭)-8字節(ICMP報頭),是否正確.
命令:ping
圖-1
圖-2
從上面2張圖的結果,能夠得出一個結果:
ICMP報文最大=1472字節=1500-20字節(IP報頭)-8字節(ICMP報頭),是否正確的!
而從另外一個角度來看若是咱們設定的 -l # 時,當中#>1472是沒有意義的,由於數據
到達網絡層後將被進行自動分片、如圖-3所示,此處再也不使用-f參數。
圖-3