*之前总结了TCP拥塞控制的原理, 这次来看看具体的设计算法——慢开始与拥塞避免。。。→_→*

  1. 拥塞窗口cwnd(Congestion Window)

    • 发送方维持一个叫做拥塞窗口的状态变量,拥塞窗口的大小取决于网络的拥塞程度且动态变化。发送方让自己的发送窗口等于拥塞窗口,如果还考虑接收方的接受能力,那么发送窗口还可能小于拥塞窗口

    • 发送方控制拥塞窗口的原则:只要网络没有出现拥塞,就增大拥塞窗口,以便将更多的分组发送出去;只要网络出现拥塞(发送方没有按时收到应当到达的确认报文),就减少拥塞窗口,以减少注入到网络中的分组数

  2. 慢开始(Slow Start)算法

    • 由小到大逐渐增加发送窗口,相当于由小到大逐渐增大拥塞窗口数值。通常在刚开始发送报文段时,先把拥塞窗口cwnd设置为一个最大报文段MSS的字节数,当每收到一个对新的报文的确认后,就将拥塞窗口增加至多一个MSS的字节数,以逐渐增大发送方的拥塞窗口cwnd

    • 使用慢开始算法后,每经历一个传输轮次(Transmission Round),拥塞窗口cwnd就加倍

    • 传输轮次:一个传输轮次所经历的时间是往返时间RTT。这里更加强调是将拥塞窗口cwnd所允许发送的报文段都连续发送出去,并收到对发送的最后一个字节的确认

  3. 拥塞避免(Congestion Avoidance )

    • 让拥塞窗口cwnd缓慢的增大,每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍,所以拥塞窗口按线性规律缓慢增长,比慢开始算法的拥塞窗口增长更加缓慢
  4. 慢开始门限ssthresh

    • 防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置慢开始门限ssthresh状态变量

    • cwnd < ssthresh时,使用慢开始算法

    • cwnd == ssthresh时,可以使用慢开始算法,也可以使用拥塞避免算法

    • cwnd > ssthresh时,使用拥塞避免算法

    • 无论使用哪种算法,只要发送方判断网络出现拥塞,就把慢开始门限ssthresh设置为出现拥塞时的发送方窗口值的一半,把拥塞窗口cwnd设置为1,执行慢开始算法

  5. 总结

    • 乘法减小(Multiplicative Decrease):不论在慢开始阶段或拥塞避免阶段,只要出现超时,就把慢开始门限值减半(当前拥塞窗口的一半)

    • 加法增大(Additive Increase):执行拥塞避免算法后,使拥塞窗口缓慢增大,以防止网络过早出现拥塞

    • 将这两种算法结合起来被称为AIMD算法

    • 拥塞避免不能完全避免拥塞,只是在拥塞避免阶段将拥塞窗口控制为线性增长,使网络不容易出现拥塞

TCP拥塞控制——慢开始与拥塞避免AIMD相关推荐

  1. 计算机网络-基本概念(9)【传输层】TCP拥塞控制 【网络层】拥塞避免

    TCP拥塞控制 对网络中某一资源的需求超过了该资源(带宽.交换节点中的缓存.处理机)所能提供的可用部分.防止过多的数据注入网络中,防止路由器或链路过载,是属于全局性的过程,包括主机.路由器.链路等设备 ...

  2. 5.3.3 计算机网络传输层之TCP拥塞控制(慢开始与拥塞避免、快重传和快恢复)

    文章目录 1.什么是拥塞控制? 2.拥塞控制与流量控制的区别 3.拥塞控制的4种算法 (1)慢开始与拥塞避免 (2)快重传和快恢复 1.什么是拥塞控制? 所谓拥塞控制,是指防止过多的数据注入网络,保证 ...

  3. linux tcp限流脚本,TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗

    tcp可以通过滑动窗口和拥塞算法实现流量控制,限制上行和下行的流量,但是却不能抵御ddos攻击. 限流只是限制访问流量的大小,是无法区分正常流量和异常攻击流量的. 限流可以控制本软件或者应用的流量大小 ...

  4. 【计算机网络】传输层 : TCP 拥塞控制 ( 慢开始 | 拥塞避免 | 快重传 | 快恢复 )

    文章目录 一.TCP 拥塞控制 二.TCP 拥塞控制算法 三.慢开始 和 拥塞避免 算法 四.快重传 和 快回复 算法 一.TCP 拥塞控制 TCP 拥塞控制 : ① 拥塞出现表现 : 资源需求总和 ...

  5. TCP的拥塞控制--慢启动,拥塞避免,快重传,快速恢复

    拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象.这种现象跟公路网中经常所见的 ...

  6. tcp拥塞控制_网络TCP的拥塞控制算法简介

    作为网络中使用最广泛的传输协议,TCP的拥塞控制机制是学术界和工业界关注的焦点问题之.然而,目前广泛使用的TCP传输协议的拥塞控制算法仍然使用相对固定的窗口调节策略,无法根据动态变化的场景自适应地调整 ...

  7. 计算机网络-TCP拥塞控制

    目录 1 拥塞概念 2 拥塞控制的一般原理 3 拥塞控制的方法 3.1 慢开始 (Slow start) 3.2 拥塞避免算法 3.3 快重传算法 3.4 快恢复算法 3.5 加法增大,乘法减小 (A ...

  8. 【计算机网络】TCP拥塞控制,分析拥塞控制的流程

    什么是拥塞?如何解决拥塞? 拥塞 :网络中某资源资源的需求超过了该资源所能提供的可用部分 为什么增加资源不能解决拥塞? 简单来说,出现拥塞就是:需求 > 供给 那么增大供给量,不就可以解决拥塞了 ...

  9. 千兆TCP拥塞控制算法分析

    作者:Geoff Huston,APNIC 回顾30多年来的互联网从业经验,我发现:促使互联网协议套件成功地成为全球通信系统首选技术的关键,是互联网协议(IP)本身.作为一种重叠协 议,它能够支持几乎 ...

  10. 网络基本功:http报文及TCP拥塞控制机制

    Http报文 HTTP请求报文由请求行.请求头部.空行和请求包体4个部分组成,如下图所示: 1.1.通用报文 General: //通用报文 Request Method: GET Status Co ...

最新文章

  1. 52深入理解C指针之---不透明指针
  2. # 2021华为软件精英挑战赛C/C++——build.sh/build_and_run.sh/CodeCraft_zip.sh注释
  3. 计算机网络实验课,【课堂】师生同上一节计算机网络实验课
  4. JDBC中Statement与PreparedStatement的区别
  5. mysql jtds驱动在哪_几个数据库的驱动、连接
  6. Socket编程例子
  7. Android--- UI组件AdapterView and 适配器Adapter
  8. Altium DesignerPCB画3Dbody
  9. onenote使用python开发_我应该用onenote还是印象笔记?
  10. html里获得农历时间,获取阴历(农历)和当前日期的js代码_javascript技巧
  11. React 语法之let和const命令
  12. 《德鲁克管理思想精要》读书笔记10 - 沟通,领导力,创新的原则
  13. xml和html的区别和联系
  14. cisco VoIP软电话配置实验
  15. 绿纹龙的森林游记——UPC
  16. 2021年度IT吃瓜指南
  17. nginx rua代码同步非阻塞
  18. 利用PhoneGap技术将“捕鱼达人”网页游戏移植到Android手机
  19. 什么样的工作轻松又赚钱?真的有这样的工作吗?
  20. 作为程序员,赚取额外收入的 4个简单副业!

热门文章

  1. Windows最简单的重装系统
  2. C程序 --- 判断闰年平年以及二月天数
  3. python生成随机中文_随机字生成器-Python
  4. 皮亚杰的认知发展理论
  5. java中的if语句_java中的条件判断语句
  6. 还在用PS?程序猿:给我200行Python代码分分钟给你批量换脸
  7. 浅谈PM(项目管理)
  8. 移植 μC/OS-III 到 STM32
  9. android手机连不上wifi,手机连不上wifi怎么办
  10. Bootstrap 导航/滑动门(nav)