TCP 丢包行为

网络工程 tcp
2022-02-10 22:39:45

假设 cwnd 当前设置为 100。 TCP (Reno) 发送整个窗口。第一个数据包丢失了。所以基本上窗口应该设置为大约一半。但这不会导致其他未确认的数据包再次发送。tcp 在这种情况下做了什么?

1个回答

拥塞窗口(CWND)将减半,在您的示例中为 50,现在您的ssthresh。由于数据包丢失,CWND 将为 1。其他数据包将在随后的 RTT 中再次发送,但只有在丢失的数据包已发送并收到 ACK 之后。因此,将发送数据包 100,并且当接收到针对所述数据包的 ACK 时,将重新传输数据包 101 和 102,依此类推。

在附图中,请参见红色框。无论状态如何,我描述的协议都会发生:慢启动、拥塞避免或快速恢复。

TCP Reno 的有限状态机