3.1 TCP MSS Option (TCP MSS 选项)
3.1 TCP MSS Option (TCP MSS 选项)
进行 PMTU 发现的主机必须遵守以下规则: 除非获得接收方的许可, 否则不得发送大于576字节的 IP 数据报. 对于 TCP 连接, 这意味着主机发送的数据报不得大于其对端发送的最大报文段大小 (Maximum Segment Size, MSS) 加40字节.
注意: TCP MSS 定义为相关 IP 数据报大小减去40 [9]. IP 数据报最大大小的默认值576字节对应 TCP MSS 的默认值536字节.
"互联网主机需求 -- 通信层" [1] 第4.2.2.6节指出:
某些 TCP 实现仅在目的主机位于非直连网络时才发送 MSS 选项. 然而, 通常情况下 TCP 层可能没有足够的信息来做出这一判断, 因此最好将确定互联网路径合适 MTU 的任务留给 IP 层.
实际上, 许多 TCP 实现总是发送 MSS 选项, 但如果目的地是非本地的, 则将值设置为536. 当互联网中充满了不遵守"不应向非本地目的地发送大于576字节数据报"规则的主机时, 这种行为是正确的. 现在大多数主机都遵守这一规则, 因此没有必要将 TCP MSS 选项中的值限制为非本地对端的536.
此外, 这样做会阻止 PMTU 发现发现大于576的 PMTU, 因此主机应该 (SHOULD) 不再降低其在 MSS 选项中发送的值. MSS 选项应为主机能够重组的最大数据报大小 (MMS_R, 如 [1] 中定义) 减去40字节; 在许多情况下, 这将是65495 (65535 - 40) 字节的架构限制. 主机可以 (MAY) 发送从其连接网络的 MTU 派生的 MSS 值 (对于多宿主主机, 为其连接网络中的最大 MTU); 这不应对 PMTU 发现造成问题, 并且可能会阻止有问题的对端发送巨大的数据报.
注意: 目前, 我们认为没有理由发送大于连接网络最大 MTU 的 MSS, 我们建议主机不要使用65495. 某些 IP 实现很可能存在符号位错误, 使用如此大的 MSS 会触发这些错误.