计算机网络——TCP拥塞控制算法

  1. 早期是Tahoe算法,包括慢启动,拥塞避免,快重传
  • 慢启动:TCP连接开始时,设置拥塞窗口cwnd为 1 个最大报文段长度(Maximum Segment Size, MSS),没接收到一个ACK,cwnd + 1。
  • 拥塞避免:当拥塞窗口cwnd = 慢启动阈值ssthresh ,结束慢启动状态变为拥塞避免,每个传输轮次(RTT),拥塞窗口cwnd + 1。
  • 快重传:如果发送方收到三个冗余的ACK,则立马重传,不需要等到超时(RTO,超时重传),并将慢启动阈值设置为拥塞窗口的一半,拥塞窗口cwnd = 1,执行慢启动。
  1. 在Reno算法中,新增了一个快恢复。
  • Reno算法(包括Cubic算法)都是基于丢包的拥塞控制。
  • 在发生快重传时,执行快恢复。
  • 快恢复就是,在丢包后不在执行慢启动,还是直接进入拥塞避免状态,即拥塞窗口和慢启动阈值都变为拥塞窗口的一半。
  1. 此外还有New Reno算法
    Reno快速恢复算法中,发送方只要收到一个新的ACK就会退出快速恢复状态而进入拥塞避免阶段,Neweno算法中,只有当所有丢失的包都重传并收到确认后才退出。
    在NewReno中,添加了恢复应答判断功能,使得TCP终端可以区分一次拥塞丢失多个包还是发生了多次拥塞。

  2. BBR算法
    BBR 是基于链路容量的拥塞控制算法,目前已经集成到 Linux 4.9 以上版本的内核中

BBR 算法周期性地探测网络的容量,交替测量一段时间内的带宽极大值和时延极小值,将其乘积作为作为拥塞窗口大小(交替测量的原因是极大带宽和极小时延不可能同时得到,带宽极大时网络被填满造成排队,时延必然极大,时延极小时需要数据包不被排队直接转发,带宽必然极小),使得拥塞窗口始的值始终与网络的容量保持一致。

在高延时、高丢包率的环境下,BBR 相对于 Cubic 算法在传输速度上有较大的提升

你可能感兴趣的:(JavaWeb,拥塞控制,计算机网络)