天天看點

Iptables下TCPMSS使用

mtu是網絡傳輸最大封包包。 mss是網絡傳輸資料最大值。 mss加標頭資料就等于mtu. 簡單說拿TCP包做例子。 封包傳輸1400位元組的資料的話,那麼mss就是1400,再加上20位元組IP標頭,20位元組tcp標頭,那麼mtu就是1400+20+20. 當然傳輸的時候其他的協定還要加些標頭在前面,總之mtu就是總的最後發出去的封包大小。mss就是你需要發出去的資料大小。

1.MSS: Maxitum Segment Size 最大分段大小 

2.MSS最大傳輸大小的縮寫,是TCP協定裡面的一個概念。 

3.MSS就是TCP資料包每次能夠傳輸的最大資料分段。

為了達到最佳的傳輸效能TCP協定在建立連接配接的時候通常要協商雙方的MSS值,這個值TCP協定在實作的時候往往用MTU值代替(需要減去IP資料包標頭的大小20Bytes和TCP資料段的標頭20Bytes)是以往往MSS為1460。通訊雙方會根據雙方提供的MSS值得最小值确定為這次連接配接的最大MSS值。

--set-mss value #設定特定MSS值  

--clamp-mss-to-pmtu #根據MTU自動調整MSS 

例如:

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

這條規則的目的就是改變TCP MSS以适應PMTU(Path MTU)

一種是把mss設定為一個固定值:

iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN- j TCPMSS --set-mss 1460

本文轉自 Linux_woniu 51CTO部落格,原文連結:http://blog.51cto.com/linuxcgi/1980972

繼續閱讀