TCP四大拥塞控制算法总结

四大算法:1.慢启动,2.拥塞避免,3.拥塞发生,4.快速恢复。

慢启动:

首先连接建好的开始先初始化拥塞窗口cwnd大小为1,表明可以传一个MSS大小的数据。

每当收到一个ACK,cwnd大小加一,呈线性上升。

每当过了一个往返延迟时间RTT,cwnd大小直接翻倍,乘以2,呈指数上升

还有一个ssthresh,是一个上限,当cwnd >= ssthresh时,会进入"拥塞避免算法"。

拥塞避免算法:

当拥塞窗口大小cwnd大于等于慢启动阈值ssthresh后,就进入拥塞避免算法。算法如下:

收到一个ACK后,则cwnd = cwnd + 1 / cwnd;

每当过了一个往返延迟时间RTT,cwnd大小加一。

过了慢启动阈值后,拥塞避免算法可以避免窗口增长过快导致窗口拥塞,而是缓慢的增加调整到网络的最佳值。

拥塞发生状态时的算法

如果发送端接收到3个以上的重复ACK,TCP就意识到数据发生丢失,需要重传。这个机制就不需要等到重传定时器超时,所以叫快速重传,而快速重传后没有使用慢启动算法,而是拥塞避免算法,所以这又叫做快速恢复算法。

当收到三个重复确认ACK时,TCP开启快速重传Fast Retransmit算法,而不用等到RTO超时再进行重传:

cwnd带下缩小为当前的一半

ssthresh设置为缩小后的cwnd大小

然后进入快速恢复算法Fast Recovery

快速恢复算法:

逻辑如下:

cwnd = cwnd + 3MSS,加3 MSS的原因是因为收到了3个重传的ACK;

重传DACKS指定的数据包;

如果再收到DACKS,那么cwnd大小增加一;

如果收到了新的ACK,表明重传的包成功了,那么退出快速恢复算法。将cwnd设置为ssthresh,然后进入拥塞避免算法。

相关推荐
郝学胜-神的一滴1 分钟前
深度拆解Python迭代协议:从底层原理到核心实践,解锁异步编程的基石
java·网络·python
WHD30624 分钟前
企业数据安全体系建设指南:从风险识别到技术落地的全流程(2026版)
大数据·网络·人工智能·安全·系统架构·密码学·安全架构
大虾别跑30 分钟前
麒麟v10搭建rsync
linux·运维·服务器
自动化智库31 分钟前
西门子XB208网管型交换机使用方法
运维·服务器·网络
CDN36035 分钟前
CSDN 运维笔记|360CDN 高防服务器配置与防护规则
运维·服务器·笔记
爱学习的小囧35 分钟前
VCF 集群部署灵活组合:单节点与高可用配置完全指南
java·服务器·前端
BullSmall38 分钟前
LVS与HAProxy高可用负载方案详解
linux·服务器·网络
docsz41 分钟前
Flink-1.20集群部署
linux·服务器·flink
昵称只能一个月修改一次。。。41 分钟前
串口+温度传感器
网络
行思理44 分钟前
Linux查看网站访问IP的命令大全
linux·服务器·前端