1
watzds 2020-06-13 13:02:05 +08:00 via Android
有些就是拍脑袋定的,不一定合理,肯定不是所有情况合理
我看那本 Wireshark 网络分析的书里这么写的 |
2
scukmh 2020-06-13 13:02:53 +08:00
有两种实现,其中有一种是一半加三,另一种是标准的一半。如果我没记错的话。感觉这只是一个理论与实现的区别。
|
3
gzfrankie 2020-06-13 13:55:18 +08:00 via iPhone 3
不是拍脑袋定的
因为 reno 的 fast recovery 阶段触发条件是收到 3 duplicate ACKs,这就说明了 Congestion windows 至少可以成功传输 3 个 segment,所以新的 Congestion windows 就设为原 Congestion windows/2 + 3 。 举例,传输过程 13 号 segment 传输成功,14 号 segment 传丢了,这时候传 15 、16 、17 号 segment 后,分别收到了 3 个 13 号 segment 的 ACKs,这说明 15 、16 、17 号其实是传输成功的。说明 Congestion Windows 至少可以传 3 个 segment,所以新的 congestion windows 最小值可以设为 3 。 |
5
cxhhh 2020-06-13 16:07:29 +08:00 2
为什么乘性减因子为 1/2 ?
因为如果连接是稳定运行的,并且出现了丢包,这可能是因为一个新的连接启动并占用了你的一些带宽。你应该将窗口减少一半,因为你可用的带宽已经减少了一半。而且,如果有两个以上的连接共享带宽,则将窗口减半是保守的——在高流量密集时保持保守可能是明智的。 建议阅读一下 van jacobson 的论文“congestion avoidance and control” |
6
wsy2220 2020-06-14 14:23:08 +08:00
为了收敛
|