1. 早期是Tahoe算法,包括慢启动,拥塞避免,快重传。 慢启动:TCP连接开始时,设置拥塞窗⼝cwnd为 1 个最⼤报⽂段长度(Maximum Segment Size, MSS),没接收到⼀个刘本仁
mssACK,cwnd + 1。
拥塞避免:当拥塞窗⼝cwnd = 慢启动阈值ssthresh ,结束慢启动状态变为拥塞避免,每个传输轮次(RTT),拥塞窗⼝cwnd + 1。
快重传:如果发送⽅收到三个冗余的ACK,则⽴马重传,不需要等到超时(RTO,超时重传),并将慢启动阈值设置为拥塞窗⼝的⼀半,拥塞窗⼝cwnd = 1,执⾏慢启动。
2. 在Reno算法中,新增了⼀个快恢复。
感染效应>键盘映射
Reno算法(包括Cubic算法)都是基于丢包的拥塞控制。
各向异性导电胶
在发⽣快重传时,执⾏快恢复。wald
快恢复就是,在丢包后不在执⾏慢启动,还是直接进⼊拥塞避免状态,即拥塞窗⼝和慢启动阈值都变为拥塞窗⼝的⼀半。
3. 此外还有New Reno算法
Reno快速恢复算法中,发送⽅只要收到⼀个新的ACK就会退出快速恢复状态⽽进⼊拥塞避免阶段,Neweno算法中,只有当所有丢失的包都重传并收到确认后才退出。
在NewReno中,添加了恢复应答判断功能,使得TCP终端可以区分⼀次拥塞丢失多个包还是发⽣了多次拥塞。
4. BBR算法
BBR 是基于链路容量的拥塞控制算法,⽬前已经集成到 Linux 4.9 以上版本的内核中
BBR 算法周期性地探测⽹络的容量,交替测量⼀段时间内的带宽极⼤值和时延极⼩值,将其乘积作为作为拥塞窗⼝⼤⼩(交替测量的原因是极⼤带宽和极⼩时延不可能同时得到,带宽极⼤时⽹络被填满造成排队,时延必然极⼤,时延极⼩时需要数据包不被排队直接转发,带宽必然极⼩),使得拥塞窗⼝始的值始终与⽹络的容量保持⼀致。 在⾼延时、⾼丢包率的环境下,BBR 相对于 Cubic 算法在传输速度上有较⼤的提升