当 TCP 客户端与远程 TCP 服务器发起 TCP 连接时,它将在 TCP 选项中宣布其 MSS。
我不知道 TCP 如何知道路径 MSS 值。此值特定于客户端和服务器之间的路径,一般来说,可以使用路径 MTU 检测来获取该值,但这会在发送 TCP SYN 数据包之前,并且会造成一些延迟。
那么,在实践中,TCP 如何获取某条路径的 MSS 值?
答案1
TCP 必须对 MSS 进行初步猜测,该 MSS 是即将发送 SYN 的本地接口的 MTU 减去适当的常数以解释 IP 报头。
此后,它可以通过以下方式之一了解较小的MSS值:
- 另一方宣布的较小 MSS
- 路径 MTU 检测(ICMP 数据包过大消息)
一旦它了解到这种减少的值,它可以将其缓存一段时间,并将其用作将来连接到同一远程地址的初始 MSS。