一個TCP報文最多傳輸多少字節(即MSS)


答案

一個TCP報文最多傳輸多少字節(即MSS)?
答案:1440

分析

報文頭的長度
TCP: 58 = 18+20+20
UDP: 46 = 18+20+8

其中鏈路層:18,IP層:20, TCP:32 UDP:8,如下圖:(各協議的報文詳情見附錄)

但我們通常說得MTU(最大傳輸單元)並不包括鏈路層,那么:
TCP: 40 = 20+20
UDP: 28 = 20+8

有些想象力豐富的小朋友會發現,鏈路層的協議上寫着數據段大小是46-1500會不會是弄錯了?
答:其實這個46和UDP沒有一毛錢關系。因為鏈路層傳輸字段的最小長度是64,鏈路協議占了18,64-18=46。也就是說,不管你發不發數據,這個46的長度是少不了的。

MTU的長度:
以太網限制長度:1500
IEEE 802.3要求長度:1492

取較小值,也就是真正用來傳輸數據的長度:
1452 = 1492 - 40
百度百科參考的一般值:
1460 = 1500 - 40

TCP頭的最大長度是60,因為偏移位占4bit最大值為15,表示TCP包頭長度,單位4字節(32bit),因此TCP頭最多長60字節。

所以我們經常抓包的時候會發現,MSS有時會是1440這個數,表示TCP包頭占了60字節。當然經過復雜的網絡環境MSS會更小。

附錄





參考網址

https://blog.csdn.net/xiaofei0859/article/details/51052848
https://www.cnblogs.com/qinqin-me/p/12942225.html
https://blog.csdn.net/baidu_17611285/article/details/80171239


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM