Appearance
tcpMSS
一句话描述 tcpMSS 功能:保证带宽利用率的同时避免 TCP segment 到 IP 层被分片。
概念
MSS:最大分段大小(Maximum Segment Size)。在有些书中,将它看作可“协商”选项。它并不是任何条件下都可协商。当建立一个连接时,每一方都有用于通告它期望接收的MSS选项(MSS选项只能出现在SYN报文段中)。如果一方不接收来自另一方的MSS值,则MSS就定为默认值536字节(这个默认值允许20字节的IP首部和20字节的TCP首部以适合576字节IP数据报)。
路径 MTU:两台通信主机路径中的最小 MTU。它被称作路径 MTU。
- 路径MTU在两个方向上不一定是一致的。
tcpMSS 期望值
tcpMSS 期望值是在三次握手阶段 “协商” 得出。
场景1:两端 MTU 不一致(Client MTU:1500,Server MTU:1400)
协商过程:
- Client SYN包,期望 MSS 值为 1460(MSS = 1500 - 20(ip头) - 20(tcp头) = 1460 byte)
- Server SYN包,期望 MSS 值为 1360(MSS = 1400 - 20(ip头) - 20(tcp头) = 1360 byte)
- 结果:MSS = 1360
wireshark 参考
TCP Option - Maximum segment size: 1460 bytes
Kind: Maximum Segment Size (2)
Length: 4
MSS Value: 1460
场景2:两端、中间 MTU 均不一致
- 协商过程:
- 待实验验证
- 路径 MTU 发现
场景3:中间经过隧道转发
- 协商过程:
- 待实验验证