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
沒有留言:
張貼留言