我正在使用 TCP 连接通过从 SYN-ACK 响应中提取 MSS 来确定路径 MTU (PMTU)。
但是,我不确定在我的端点和服务器之间的路由不对称的情况下这种方法是否仍然可靠。
据我所知,SYN-ACK 中的 MSS 反映了连接目标的 MTU,如果返回路径上的任何节点具有较小的 MTU,则可以减少 MSS。
但是,当转发和返回路径不同时,由于它们可能经过具有不同 MTU 的不同跳数,因此我可能会得到不准确的结果。有没有办法将整个转发和返回旅程包含在 SYN_ACK 收到的 MSS 值中?
谢谢
您说得对,PMTU 可以是不对称的,因此仅从 SYN-ACK 获取一个方向的 MSS TCP 选项是不够的。
路径上的路由器通常不会降低 TCP 报头中的 MSS 选项,因为一般不允许修改 TCP 报头(NAT(特别是 NAPT)是个例外,但 NAT 一直被了解互联网协议背后设计理念的人们广泛认为是一个丑陋的临时解决方案)。
还要注意,生成 SYN 和 SYN-ACK 时,路径 MTU 发现尚未发生,因此 MSS TCP 选项仅反映每个主机的本地链路(第一跳)MTU,该 MTU 可能高于实际 PMTU。一旦全尺寸数据包开始流动,初始 MTU 可能会向下修正,从而允许发生 PMTUD。