TCP 最大報文段長度 MSS

TCP 最大報文段長度 MSS(Maximum Segment Size)網絡

 

MSS 是TCP選項中最常常出現,也是最先出現的選項。MSS選項佔4byte。MSS是每個TCP報文段中數據字段的最大長度,注意:只是數據部分的字段,不包括TCP的頭部。TCP在三次握手中,每一方都會通告其指望收到的MSS(MSS只出如今SYN數據包中)若是一方不接受另外一方的MSS值則定位默認值536byte。spa

MSS值過小或太大都是不合適。過小,例如MSS值只有1byte,那麼爲了傳輸這1byte數據,至少要消耗20字節IP頭部+20字節TCP頭部=40byte,這還不包括其二層頭部所須要的開銷,顯然這種數據傳輸效率是很低的。MSS過大,致使數據包能夠封裝很大,那麼在IP傳輸中分片的可能性就會增大,接受方在處理分片包所消耗的資源和處理時間都會增大,若是分片在傳輸中還發生了重傳,那麼其網絡開銷也會增大。所以合理的MSS是相當重要的。MSS的合理值應爲保證數據包不分片的最大值。對於以太網MSS能夠達到1460byte.圖片

與MSS類似的在IP層也有一個相似的概念---MTU(Maximum Transfer Unit)下圖能夠清晰反映MSS與MTU 的關係:資源

MTU=MSS+TCP Header+IP Header.it

實例:效率

對於TCP來講,它是儘可能避免分片的。假設咱們這裏要發送給TCP層的數據大小爲2748個字節,這個大小是明顯大於鏈路層的發送數據的大小的,在這個狀況下咱們來看,對於來自TCP層的數據,IP會不會進行分片。im

 

從這張圖看來,應用層的2748個字節在TCP層就進行了分段,分紅了兩個TCP段,一個1460字節,一個1288字節。那麼到IP層的時候,天然就不會在進行分片了。數據

 

從這張圖片看出,在這兩個TCP分段中,在序號3處,IP的頭部字段(Don ' t Fragment) 被設置了,用於告訴IP層不要對該數據進行分片。img

===================END===================時間

相關文章
相關標籤/搜索