![当主机在握手期间未指定 MSS 时,TCP 中的预期行为是什么?](https://linux22.com/image/753346/%E5%BD%93%E4%B8%BB%E6%9C%BA%E5%9C%A8%E6%8F%A1%E6%89%8B%E6%9C%9F%E9%97%B4%E6%9C%AA%E6%8C%87%E5%AE%9A%20MSS%20%E6%97%B6%EF%BC%8CTCP%20%E4%B8%AD%E7%9A%84%E9%A2%84%E6%9C%9F%E8%A1%8C%E4%B8%BA%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
假设有两台主机 A 和 B,它们将通过 TCP 进行通信。我很好奇与 MSS 相关的 TCP 行为。维基百科说 MSS 的默认值是 536。但是,RFC-793状态 - 当未指定 MSS 选项时,允许任何段大小。这两个语句让我感到困惑,我很想知道以下场景:
如果两台主机在 TCP 握手期间均未指定 MSS,则两台主机使用的 MSS 值是否为 536,否则会怎样? 双方的 TCP 堆栈将如何处理有效负载大于 MSS 的传入 TCP 段? 两台主机都会丢弃该数据包吗?
当主机 A 在 TCP 握手期间未指定 MSS 而主机 B 指定时,对等方(主机 B)会假设 MSS 值是什么?536 还是其他值?当主机 A 收到包含有效负载超过 536 字节(默认 MSS 值)的 TCP 段数据包时,主机 A 会做什么行为。主机 A 会丢弃该数据包吗?
当两个主机都指定 MSS 并发送包含大于 MSS 的有效负载的 TCP 段时?
提前谢谢!