gpt4 book ai didi

tcp - TCP 是否扩展到快速网络?

转载 作者:可可西里 更新时间:2023-11-01 02:34:14 30 4
gpt4 key购买 nike

似乎最大 TCP 接收窗口大小为 1GB(使用缩放时)。因此,仍然可以用一个连接填充 100Gb 管道的最大 RTT 是 40ms(因为 2 * 40E-3 * 100E9/8 = 1GB)。这会将这种通信速度限制在 IRO 10000 公里的距离内。

另一个缩放问题似乎是 32 位序列号不能防止延迟超过 400 毫秒的重复数据包(因为它们会在这段时间内回绕)。他们还将窗口大小限制为 2GB(因为它们需要在发送方和接收方窗口之间拆分)。

三个问题:

我知道 TCP 时间戳可以帮助解决序列号问题,但我想知道这是否是一个恰好有用的功能,但实际上是为其他目的而设计的。另外,我不明白时间戳实现的是什么,不能简单地通过增加用于序列号的位数来实现。

我不明白为什么最大接收窗口只有 1GB,而不是 2GB,而这对于当前的 header 来说可能是微不足道的。

最后,我想知道 TCP 是否已经扩展到足以用于预计即将推出的那种链接。

非常感谢。

最佳答案

您所说的 TCP 特性在 RFC 1323 中指定。在 1990 年代初期。 RFC 中的讨论文本证明了您遇到的限制:

  • 序列号出现在TCP segment header的中间如果没有不兼容的更改,就不可能延长。
  • 使用时间戳允许协议(protocol)同时测量往返时间并防止包装序列号。增大序列号不会提供任何有关往返时间的信息。
  • 您需要时间戳才能准确测量往返时间。在没有时间戳的情况下测量往返时间是一个采样问题,如果每个窗口的错误超过 1 个,则采样会由于混叠而无法解决。
  • 1 GB 的接收窗口是可以在整个连接中保持同步的最大接收窗口。 RFC 解释了它以及可以做的事情:
TCP determines if a data segment is "old" or "new" by testing
whether its sequence number is within 2**31 bytes of the left edge
of the window, and if it is not, discarding the data as "old". To
insure that new data is never mistakenly considered old and vice-
versa, the left edge of the sender's window has to be at most
2**31 away from the right edge of the receiver's window.
Similarly with the sender's right edge and receiver's left edge.
Since the right and left edges of either the sender's or
receiver's window differ by the window size, and since the sender
and receiver windows can be out of phase by at most the window
size, the above constraints imply that 2 * the max window size
must be less than 2**31, or

max window < 2**30

作为Jonathon前面提到,这些限制是针对每个 TCP 连接的。很难想象单个应用程序可能达到单个 TCP 连接限制的场景,更难以想象应用程序无法在需要时打开其他连接的场景。

关于tcp - TCP 是否扩展到快速网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847842/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com