networking - MSS 和 tcp 窗口大小

标签 networking tcp

<分区>

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

最佳答案

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

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

您似乎将流量控制和滑动窗口与最大段大小混为一谈。


根据评论更新

Is it that Window size cannot exceed the MSS ? I fail to find relation between them.

不,不是这样。

Is it that window size purely depends on the buffer size at sender and receiver and MSS depends on the MTU?

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

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

  • 接收窗口。用于实现 Flow Control ,由接收方维护和指定。它受到接收器从一个时刻缓冲到下一个时刻的能力的限制。接收窗口定义在发送方确认之前可以发送多少数据。另见 BDP . MSS 与接收窗口无关。
  • 拥塞窗口。用于实现 Congestion Control .由发件人维护和使用。拥塞窗口大小实际上是 MSS 的倍数。

Window size for both A and B can be different but MSS remamins same because of the common link they share?

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

我建议您在此处阅读整篇文章:http://en.wikipedia.org/wiki/Transmission_Control_Protocol因为有图表可以帮助理解。

关于networking - MSS 和 tcp 窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13287404/

相关文章:

java - 为什么C和Java代码之间的socket通信只收到64K数据?

linux - 如何通过本地网络从 Windows 机器向 Linux 机器发送文件?

networking - 无需虚拟 PC 即可访问网络的 Pocket PC 模拟器?

Java应用程序即使 "CLOSE ON EXIT"也无法关闭,TCP服务器

c# - 在我的 C# 应用程序中,Thread.Start 在一些稀疏的情况下没有返回

networking - tcp syn 的强制选项

linux - 如何使用connman设置以太网接口(interface)MAC地址

java - IOException 网络无法访问

windows - 如何查找正在使用的临时端口数?

c# - 我如何持续监控新的 TCP 客户端?