Networking 了解TCP';这是一个缓慢的开始
我有点不好意思承认,我很难理解TCP的慢启动,这应该是一个非常简单的算法。考虑这种情况:Networking 了解TCP';这是一个缓慢的开始,networking,tcp,Networking,Tcp,我有点不好意思承认,我很难理解TCP的慢启动,这应该是一个非常简单的算法。考虑这种情况: 发送方的CWND=4并发送所有4段 接收机为每个接收段发送一个ack(它不使用任何类型的延迟ack策略) 4个ACK快速到达发送方,并在发送方的网络缓冲区中排队 发送方处理ack 1,将cwnd增加到5,并发送5段 发送方处理ack 2,将cwnd增加到6,并发送6段(发送总数:11) 发送方处理ack 3,将cwnd增加到7,并发送7段(发送总数:18) 发送方处理ack 4,将cwnd增加到8,并发
- 发送方的CWND=4并发送所有4段
- 接收机为每个接收段发送一个ack(它不使用任何类型的延迟ack策略)
- 4个ACK快速到达发送方,并在发送方的网络缓冲区中排队
- 发送方处理ack 1,将cwnd增加到5,并发送5段
- 发送方处理ack 2,将cwnd增加到6,并发送6段(发送总数:11)
- 发送方处理ack 3,将cwnd增加到7,并发送7段(发送总数:18)
- 发送方处理ack 4,将cwnd增加到8,并发送8段(发送总数:26)
这证实了@jman的解释。
cwnd
表示未确认的段。因此,当接收到第一个应答时,cwnd
变为5
,堆栈发送2
更多的段,因为飞行中已经有3
未确认的段
你的例子应该是:
- 发送方处理ack 1,将cwnd增加到5,并再发送2段(发送总数:6)
- 发送方处理ack 2,将cwnd增加到6,并再发送2段(发送总数:8)
- 发送方处理ack 3,将cwnd增加到7,并再发送2段(发送总数:10)
- 发送方处理ack 4,将cwnd增加到8,并再发送2段(发送总数:12)
cwnd
)都在增长。我同意拥塞窗口实际上呈指数增长。然而,在实践中,发送方每次只能发送两个段的小突发。ACK确实很快到达。这个问题似乎是离题的,因为它是关于计算机科学,而不是计算机编程。