TCP中的MSS解讀

2021-06-25 11:46:35 字數 595 閱讀 9666

mss 是tcp選項中最經常出現,也是最早出現的選項。mss選項佔4byte。mss是每乙個tcp報文段中資料字段的最大長度,注意:只是資料部分的字段,不包括tcp的頭部。tcp在三次握手中,每一方都會通告其期望收到的mss(mss只出現在syn資料報中)如果一方不接受另一方的mss值則定位預設值536byte。

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.

事實是傳送方和接收方存在很多中間裝置,那mss是如何協商的呢?

請看下圖:

TCP的MSS 最大分段 以及MTU

mtu maxitum transmission unit 最大傳輸單元 mss maxitum segment size 最大分段大小 pppoe ppp over ethernet 在乙太網上承載ppp協議 分析過程 先說說這mtu最大傳輸單元,這個最大傳輸單元實際上和鏈路層協議有著密切的關係,...

TCP之1460MSS和1448負載

1448位元組是實際場景下,單個tcp包的實際運載能力。也就是說,實際場景下,上層呼叫send 1000kb 下層會把這1000kb封裝成多個tcp包進行傳送。單個tcp包每次打包1448位元組的資料進行傳送。詳細的tcp在傳輸情景wireshark截圖如圖1 圖1每個tcp包在理論上應該能打包更多...

TCP傳輸的單個報文最大位元組(MSS和MTU)

1448位元組是實際場景下,單個tcp包的實際運載能力。也就是說,實際場景下,上層呼叫send 1000kb 下層會把這1000kb封裝成多個tcp包進行傳送。單個tcp包每次打包1448位元組的資料進行傳送。詳細的tcp在傳輸情景wireshark截圖如圖1 圖1每個tcp包在理論上應該能打包更多...