码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【计算机网络】 拥塞控制


    文章目录

      • 背景
      • TCP的四种拥塞控制算法
        • 慢开始与拥塞避免:
        • 快重传:
        • 快恢复:
      • 流量控制和拥塞控制本质上的 区别

    背景

    网络中的链路容量和交换节点中的缓存和处理机都有着工作的极限,当网络的需求超过他们的工作极限时,就出现了拥塞。在网络中出现拥堵时,如果继续发送大量数据包,可能会导致数据包时延、丢失等,这是TCP就会重传数据,但是 一重传就会导致网络的负担更重,于是会 导致更大的时延以及更多的丢包,这个情况就会进入恶性循环被不断地放大…

    在这里插入图片描述

    TCP的四种拥塞控制算法

    1. 慢开始
    2. 拥塞避免
    3. 快重传
    4. 快恢复

    慢开始与拥塞避免:

    发送方维持一个叫拥塞窗口cwnd(congestion window)的状态变量。拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。发送方让自己的发送窗口等于拥塞窗口,另外考虑到接受方的接收能力,发送窗口可能小于拥塞窗口。

    慢开始算法的思路就是,不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到逐渐增加拥塞窗口的大小,是成倍增长。

    为了 防止cwnd增长过大引起网络拥塞,还需 设置一个慢开始门限ssthresh状态变量。ssthresh的用法如下:

    1. cwnd < ssthresh,使用慢开始算法
    2. cwnd > ssthresh,使用拥塞避免算法
    3. cwnd = ssthresh,慢开始与拥塞避免算法任意

    拥塞避免算法让拥塞窗口缓慢增长,即没经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口按线性规律缓慢增长。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    发生超时重传就判断网络可能出现拥塞,那么就将ssthresh的值更新为发生拥塞时的cwnd的一半,然后将cwnd的值减少为1,重新开始执行慢开始算法。

    快重传:

    在这里插入图片描述

    当接收方发现有数据包丢失时,立刻发送三个对应的ack,当发送方收到三个连续的ack时,立即重传。

    快恢复:

    在这里插入图片描述

    当收到三个重复的ACK时,触发快重传机制,那么cwnd会变为原来的一半,然后ssthresh等于当前的cwnd,然后使用快恢复的算法,cwnd=ssthresh+3,然后继续使用拥塞避免算法。

    流量控制和拥塞控制本质上的 区别

    答:流量控制是端到端的控制,由接收方控制发送方;拥塞控制是对整个网络的控制,所有接入这个网络的设备都受其影响。

  • 相关阅读:
    Nacos 配置中心
    T2I-Adapter:增强文本到图像生成的控制能力
    AI语音系统电销机器人系统搭建,电话机器人源码是干嘛的?
    【物理应用】基于粒子群优化算法实现瞬变电磁法视电阻率反演附matlab代码
    React Native 工程基础建设
    可视化学习:CSS transform与仿射变换
    当发布/订阅模式遇上.NET
    spark为什么比mapreduce快?
    阿里笔试——总结2
    类和对象(跑路人笔记)<完>
  • 原文地址:https://blog.csdn.net/jia_03/article/details/133099258
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号