TCP拥塞控制:确保网络中数据流量合理传输,避免网络拥塞崩溃的重要机制。
TCP 拥塞控制的原理:TCP 通过监测网络中的拥塞迹象,如分组丢失、延迟增加等,来调整发送端的数据发送速率。当网络出现拥塞时,发送端会降低发送速率,以避免进一步加重网络负担;当网络状况好转时,发送端会逐渐增加发送速率,充分利用网络带宽。、
常见的 TCP 拥塞控制算法
慢启动:
算法原理:在连接建立初期或出现拥塞后恢复阶段,发送端以指数增长的方式逐渐增加拥塞窗口(cwnd)大小。即每经过一个往返时间(RTT),拥塞窗口大小就翻倍。例如,初始时 cwnd 为 1,经过一个 RTT 后变为 2,下一个 RTT 后变为 4,以此类推。
作用:快速探测网络的可用带宽,让数据快速注入网络,但又能避免一开始就发送大量数据导致网络拥塞。
拥塞避免
算法原理:当拥塞窗口大小达到一定阈值(ssthresh)后,慢启动阶段结束,进入拥塞避免阶段。在这个阶段,发送端每经过一个 RTT,拥塞窗口大小增加 1/cwnd,而不是翻倍。例如,cwnd 为 10 时,每个 RTT 增加 1/10,即 0.1。如果出现数据包丢失或超时,就认为发生了拥塞,将 ssthresh 设置为当前 cwnd 的一半,同时将 cwnd 重置为 1,重新进入慢启动阶段。
作用:在网络接近拥塞点时,更加缓慢地增加发送速率,以避免网络拥塞的发生。一旦检测到拥塞,及时降低发送速率,以缓解网络拥塞。
快重传
算法原理::当接收端收到乱序的数据包时,会立即发送重复的确认(ACK)给发送端。发送端只要收到三个相同的 ACK,就认为该 ACK 对应的数据包已经丢失,不等超时就立即重传该数据包。
作用:能够在不等待超时的情况下,快速发现并重传丢失的数据包,提高数据传输的效率,减少不必要的延迟。
快恢复
算法原理:在快重传之后,不直接进入慢启动阶段,而是将 ssthresh 设置为当前 cwnd 的一半,然后将 cwnd 设置为 ssthresh 加上 3 倍的 MSS(最大段大小),开始执行拥塞避免算法,逐渐增加 cwnd。这是因为收到三个重复的 ACK,说明网络中还有一定的带宽可用,不需要像传统的慢启动那样将 cwnd 一下子降为 1。
作用:在快速重传丢失数据包后,能够更快地恢复网络传输,避免了慢启动阶段对网络带宽的过度保守利用,提高了网络的吞吐量和响应速度。