TCP 拥塞窗口大小

标签 tcp window size sliding-window congestion-control

我正在进行一些修改,我被一个 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/

相关文章:

sockets - 当套接字连接中的一个端点断开连接时会发生什么

Python TCP 套接字 header

tcp - 哪个超时值决定了多长时间空闲的TCP连接会被关闭?

javascript - 如何创建一个新窗口

javascript - 防止在 JavaScript 中冒泡和捕获时触发事件

html - 如何在固定大小的 100x100 div 中显示任意大小的图像?

tcp - SYN 和 SYN+ACK 未被防火墙阻止

wpf - 动态更改 WPF 窗口的启动位置

java - 如何解决java.lang.OutOfMemoryError : Java heap space error

database - 开源 Virtuoso DB 或任何特定图形的大小