TCP 如何获取特定路径的 MSS 值?

mis*_*yes 5 networking tcp

当 TCP 客户端发起与远程 TCP 服务器的 TCP 连接时,它将在 TCP 选项中宣布其 MSS。

我不知道 TCP 如何知道路径 MSS 值。该值特定于客户端和服务器之间的路径,一般来说,可以通过路径 MTU 检测来获取该值,但那是在 TCP SYN 数据包发送之前,会造成一些延迟。

那么,在实践中,TCP 是如何获取某条路径的 MSS 值的呢?

Cel*_*ada 4

TCP 必须对 MSS 进行初始猜测,MSS 将是要通过其发送 SYN 的本地接口的 MTU,减去用于说明 IP 标头的适当常量。

此后,它可以通过以下方式之一获知较小的MSS值:

  • 另一个同行宣布的较小的 MSS
  • 路径 MTU 检测(ICMP 数据包太大消息)

一旦它获悉这样一个减小的值,它就可以将其缓存一段时间,并将其用作将来连接到同一远程地址的初始 MSS。