我正在进行一些修改,我被一个 TCP 问题难住了。也许有人可以给我一个快速提示或插入正确的方向,这样我就可以通过这一部分。
“为什么TCP中的发送实体在确定滑动窗口大小时需要考虑拥塞窗口的大小?”
最佳答案
"Why does the sending entity in TCP need to consider the size of the congestion window when determining the sliding window size? "
这是因为拥塞窗口的大小代表了网络中可能出现的拥塞情况。这是 TCP 提供的关键特性之一。此窗口分三个阶段更新。
在第一阶段,当 TCP 启动时,它以 1 MSS(最大段大小)的拥塞窗口开始,然后以缓慢启动的方式逐渐增加。 TCP 发送方以此值开始,因为它正在“估计”它可以在网络中发送多少数据包。此阶段也称为慢启动阶段。顺便说一句,即使它被称为慢启动,TCP 通过加倍拥塞窗口来增加数据包,并且增加发生在收到 ACK 时。
在第二个阶段,当拥塞窗口达到慢启动 (ss) 阈值(是的,有一个!),TCP 发送方增加其拥塞窗口——这就是拥塞避免阶段。在这里,发件人变得更加谨慎。同样,增加发生在收到 ACK 时。
在第三阶段,当一个数据包被丢弃时(一个原因可能是发生了重传超时),然后 TCP 将其拥塞窗口削减回 1 MSS 并重新启动以再次增长它。这样做是因为遇到了可能的拥塞,因此减少拥塞窗口可能会缓解路径上的拥塞情况。与其他阶段不同,减少是由于未收到 ACK。
关于TCP 拥塞窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18809831/