TCP拥塞控制——慢开始与拥塞避免AIMD
*之前总结了TCP拥塞控制的原理, 这次来看看具体的设计算法——慢开始与拥塞避免。。。→_→*
拥塞窗口cwnd(Congestion Window)
发送方维持一个叫做拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程度且动态变化。发送方让自己的发送窗口等于拥塞窗口,如果还考虑接收方的接受能力,那么发送窗口还可能小于拥塞窗口
发送方控制拥塞窗口的原则:只要网络没有出现拥塞,就增大拥塞窗口,以便将更多的分组发送出去;只要网络出现拥塞(发送方没有按时收到应当到达的确认报文),就减少拥塞窗口,以减少注入到网络中的分组数
慢开始(Slow Start)算法
由小到大逐渐增加发送窗口,相当于由小到大逐渐增大拥塞窗口数值。通常在刚开始发送报文段时,先把拥塞窗口cwnd设置为一个最大报文段MSS的字节数,当每收到一个对新的报文的确认后,就将拥塞窗口增加至多一个MSS的字节数,以逐渐增大发送方的拥塞窗口cwnd
使用慢开始算法后,每经历一个传输轮次(Transmission Round),拥塞窗口cwnd就加倍
传输轮次:一个传输轮次所经历的时间是往返时间RTT。这里更加强调是将拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到对发送的最后一个字节的确认
拥塞避免(Congestion Avoidance )
- 让拥塞窗口cwnd缓慢的增大,每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,所以拥塞窗口按线性规律缓慢增长,比慢开始算法的拥塞窗口增长更加缓慢
慢开始门限ssthresh
防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置慢开始门限ssthresh状态变量
当cwnd < ssthresh时,使用慢开始算法
当cwnd == ssthresh时,可以使用慢开始算法,也可以使用拥塞避免算法
当cwnd > ssthresh时,使用拥塞避免算法
无论使用哪种算法,只要发送方判断网络出现拥塞,就把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半,把拥塞窗口cwnd设置为1,执行慢开始算法
总结
乘法减小(Multiplicative Decrease):不论在慢开始阶段或拥塞避免阶段,只要出现超时,就把慢开始门限值减半(当前拥塞窗口的一半)
加法增大(Additive Increase):执行拥塞避免算法后,使拥塞窗口缓慢增大,以防止网络过早出现拥塞
将这两种算法结合起来被称为AIMD算法
拥塞避免不能完全避免拥塞,只是在拥塞避免阶段将拥塞窗口控制为线性增长,使网络不容易出现拥塞
TCP拥塞控制——慢开始与拥塞避免AIMD相关推荐
- 计算机网络-基本概念(9)【传输层】TCP拥塞控制 【网络层】拥塞避免
TCP拥塞控制 对网络中某一资源的需求超过了该资源(带宽.交换节点中的缓存.处理机)所能提供的可用部分.防止过多的数据注入网络中,防止路由器或链路过载,是属于全局性的过程,包括主机.路由器.链路等设备 ...
- 5.3.3 计算机网络传输层之TCP拥塞控制(慢开始与拥塞避免、快重传和快恢复)
文章目录 1.什么是拥塞控制? 2.拥塞控制与流量控制的区别 3.拥塞控制的4种算法 (1)慢开始与拥塞避免 (2)快重传和快恢复 1.什么是拥塞控制? 所谓拥塞控制,是指防止过多的数据注入网络,保证 ...
- linux tcp限流脚本,TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗
tcp可以通过滑动窗口和拥塞算法实现流量控制,限制上行和下行的流量,但是却不能抵御ddos攻击. 限流只是限制访问流量的大小,是无法区分正常流量和异常攻击流量的. 限流可以控制本软件或者应用的流量大小 ...
- 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )
文章目录 一.TCP 拥塞控制 二.TCP 拥塞控制算法 三.慢开始 和 拥塞避免 算法 四.快重传 和 快回复 算法 一.TCP 拥塞控制 TCP 拥塞控制 : ① 拥塞出现表现 : 资源需求总和 ...
- TCP的拥塞控制--慢启动,拥塞避免,快重传,快速恢复
拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象.这种现象跟公路网中经常所见的 ...
- tcp拥塞控制_网络TCP的拥塞控制算法简介
作为网络中使用最广泛的传输协议,TCP的拥塞控制机制是学术界和工业界关注的焦点问题之.然而,目前广泛使用的TCP传输协议的拥塞控制算法仍然使用相对固定的窗口调节策略,无法根据动态变化的场景自适应地调整 ...
- 计算机网络-TCP拥塞控制
目录 1 拥塞概念 2 拥塞控制的一般原理 3 拥塞控制的方法 3.1 慢开始 (Slow start) 3.2 拥塞避免算法 3.3 快重传算法 3.4 快恢复算法 3.5 加法增大,乘法减小 (A ...
- 【计算机网络】TCP拥塞控制,分析拥塞控制的流程
什么是拥塞?如何解决拥塞? 拥塞 :网络中某资源资源的需求超过了该资源所能提供的可用部分 为什么增加资源不能解决拥塞? 简单来说,出现拥塞就是:需求 > 供给 那么增大供给量,不就可以解决拥塞了 ...
- 千兆TCP拥塞控制算法分析
作者:Geoff Huston,APNIC 回顾30多年来的互联网从业经验,我发现:促使互联网协议套件成功地成为全球通信系统首选技术的关键,是互联网协议(IP)本身.作为一种重叠协 议,它能够支持几乎 ...
- 网络基本功:http报文及TCP拥塞控制机制
Http报文 HTTP请求报文由请求行.请求头部.空行和请求包体4个部分组成,如下图所示: 1.1.通用报文 General: //通用报文 Request Method: GET Status Co ...
最新文章
- 52深入理解C指针之---不透明指针
- # 2021华为软件精英挑战赛C/C++——build.sh/build_and_run.sh/CodeCraft_zip.sh注释
- 计算机网络实验课,【课堂】师生同上一节计算机网络实验课
- JDBC中Statement与PreparedStatement的区别
- mysql jtds驱动在哪_几个数据库的驱动、连接
- Socket编程例子
- Android--- UI组件AdapterView and 适配器Adapter
- Altium DesignerPCB画3Dbody
- onenote使用python开发_我应该用onenote还是印象笔记?
- html里获得农历时间,获取阴历(农历)和当前日期的js代码_javascript技巧
- React 语法之let和const命令
- 《德鲁克管理思想精要》读书笔记10 - 沟通,领导力,创新的原则
- xml和html的区别和联系
- cisco VoIP软电话配置实验
- 绿纹龙的森林游记——UPC
- 2021年度IT吃瓜指南
- nginx rua代码同步非阻塞
- 利用PhoneGap技术将“捕鱼达人”网页游戏移植到Android手机
- 什么样的工作轻松又赚钱?真的有这样的工作吗?
- 作为程序员,赚取额外收入的 4个简单副业!