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,然后进入拥塞避免算法。

相关推荐
JoyCong199813 小时前
打破远程协助的安全信任困局,ToDesk AI审计功能自动操作留痕
网络·人工智能·科技·安全·电脑·远程工作
CHANG_THE_WORLD13 小时前
12.总结:深入理解 Linux I/O 多路复用:select、poll、epoll 全解析
linux·运维·服务器
风曦Kisaki13 小时前
# Linux笔记:操作系统优化与资源管理
linux·运维·服务器·笔记
Mr.HeBoYan14 小时前
一次持续三天才出现的丢包故障——深入解析 DPDK Memory Ordering、rte_ring 与 CPU Memory Barrier (下)
linux·网络·算法·架构·dpdk
初願致夕霞16 小时前
C++懒汉单例设计详解
服务器·开发语言·c++
啊哦11117 小时前
安装VMware Workstation
linux·运维·服务器
我是唐青枫17 小时前
Java Netty 实战指南:从 NIO 线程模型到 TCP 编解码和心跳机制
java·tcp/ip·nio
持敬chijing18 小时前
Linux基础命令与目录命令
linux·运维·服务器
小张成长计划..18 小时前
【Linux】12:进程状态
linux·运维·服务器
kp0000018 小时前
System Prompt Leakage(系统提示词泄露)及安全防御
网络·安全·网络安全·信息安全·prompt·ai安全