Networking MSS和tcp窗口大小

Networking MSS和tcp窗口大小,networking,tcp,Networking,Tcp,在A和B之间的通信期间, 当A向B发送数据时,段大小将取决于B的窗口大小。 最初,在B成功接收数据后,它将窗口大小加倍,并继续。 现在B知道了它的MSS。因此,在向A发送段大小时,它可以确保它不超过MSS值。 那么为什么B必须首先通知MSS给A呢?段大小取决于发送方和接收方各自连接到的网络的数据链路层的MTU大小 路径MTU发现可用于发现发送方和接收方之间的最小MTU大小,以动态确定发送方和接收方之间的最佳最大段大小(避免IP碎片)(假设发送方和接收方之间的所有路由器都遵守do_not_碎片位)

在A和B之间的通信期间, 当A向B发送数据时,段大小将取决于B的窗口大小。 最初,在B成功接收数据后,它将窗口大小加倍,并继续。 现在B知道了它的MSS。因此,在向A发送段大小时,它可以确保它不超过MSS值。
那么为什么B必须首先通知MSS给A呢?

段大小取决于发送方和接收方各自连接到的网络的数据链路层的MTU大小

路径MTU发现可用于发现发送方和接收方之间的最小MTU大小,以动态确定发送方和接收方之间的最佳最大段大小(避免IP碎片)(假设发送方和接收方之间的所有路由器都遵守do_not_碎片位)

您似乎将流量控制和滑动窗口与最大段大小合并在一起


根据评论更新

窗口大小是否不能超过MSS?我找不到他们之间的关系

不,不是这样

是否窗口大小完全取决于发送方和接收方的缓冲区大小,而MSS则取决于MTU

MSS和MTU大小是需要上下文的术语,因为它们根据上下文有不同的含义

虽然只考虑一个转移方向,但有两个“窗口”需要考虑:

  • 接收窗口。用于由接收方实施、维护和指定。它受到接收器从一个时刻到下一个时刻缓冲的能力的限制。接收窗口定义在发送方确认之前可以发送多少数据。另见。MSS与接收窗口无关
  • 拥塞窗口。用于实现。由发送方维护和使用。拥塞窗口大小实际上是MSS的倍数
A和B的窗口大小可以不同,但MSS由于共享公共链接而保持相同

没有要求MSS是对称的。没有保证或要求从A到B的路径与从B到A的路径相同

我建议您在这里阅读整篇文章:因为这里有助于理解的图表

段大小将取决于B的窗口大小


在MTU的路上。这两个数字中的较低者适用。对于给定路径,路径MTU是常数;公布的窗口大小是动态的,取决于接收器套接字接收缓冲区、慢启动等的状态。

这个问题与堆栈溢出无关,因为它不是一个编程问题。更不用说几个主要的路由系统都有TCP MSS调整选项,以避免碎片,与吞吐量完全无关。@MattH:是窗口大小不能超过MSS吗?我找不到他们之间的关系。是否窗口大小完全取决于发送方和接收方的缓冲区大小,而MSS则取决于MTU?A和B的窗口大小可能不同,但MSS保持相同,因为它们共享相同的链接?@script\u kiddie不,这不是真的。你为什么还要问?他已经明确提到了这一点。