networking - tcp reno、newreno 和慢启动

标签 networking tcp network-protocols

当在慢启动过程中发生丢包时,reno/newreno 算法是否注意到可能的 dupacks,还是纯粹的慢启动 -> rto?

因此,如果发送两个数据包(在慢启动开始时),而第一个数据包丢失了,那么慢启动除了 rto 之外还会做其他事情吗?

这是令人困惑的,因为 rfc 声明“在实践中它们(慢启动和拥塞避免)是一起实现的”。而且 linux 源代码读起来有点厚,而且只有一个实现。

最佳答案

When packet loss occurs while in slow start, does the reno/newreno algorithms notice possible dupacks, or is it purely slowstart -> rto?

我会说"is",重复的 ACK 将被检测到并采取行动。参见 RFC 2001, Section 2.3 .

Thus, if sending two packets (in start of slow start), and first one goes missing, does slow start do anything else but rto?

这个特定的例子会导致一个“简单的 RTO”。在慢启动开始时,当只能发送两个数据包时,最多会有一个重复的 ACK(由第二个数据包到达触发)。如果两个数据包都(将)一起被确认,甚至可能没有。但是一个重复的 ACK 不会触发快速重传。所以TCP会等待重传定时器超时。

It is confusing, since rfc states that 'in practice they (slow start & congestion avoidance) are implemented together'. And linux source is a bit thick read and only one implementation.

我同意 linux 源代码需要仔细阅读。但它是确定的,如果您真的需要知道可能是唯一的选择 :) 除非您找到读(或写)它的人;我没有。

关于networking - tcp reno、newreno 和慢启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3802125/

相关文章:

c - TCP 客户端不处理损坏的服务器在 C 中正确连接

c# - 识别本地网络上的用户和机器

design-patterns - 客户端服务器应用程序设计模式和协议(protocol)

java 聊天应用程序无法在其他机器上运行

sockets - 多用户 Windows 服务器上的端口号处理

java - 处理去同步

c++ - 在 Boost ASIO 中,如何设置源 IP 地址以模拟另一台服务器的 IP 地址?

android - 以编程方式获取 Wi-Fi 协议(protocol) (802.11a/b/g/n)

java - 在 Android 中建立 FTP 连接

java - 使用任何主机的 IP 地址构造 InetSocketAddress 的正确方法是什么?