• 在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况称之为拥塞
  • 若出现拥塞而不进行控制,整个网络的吞吐量将随着输入负荷的增大而下降
  • TCP采用的方法是:让每一个发送方根据所感知到的网络拥塞程度来限制其能向连接发送流量的速率。

TCP的拥塞控制算法( 慢启动,拥塞避免,快重传,快恢复

  • 发送方维护了一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化

    • 拥塞窗口cwnd的维护原则:只要网络没有出现阻塞,拥塞窗口就再增大一些;但只要网络出现拥塞,拥塞窗口就减小一些。
    • 判断出现网络拥塞的依据:没有按时收到应当到达的确认报文(即发送超时重传)
  • 发送方将拥塞窗口作为发送窗口swnd,即swnd = cwnd。
  • 维护一个慢开始门限ssthresh状态变量
    • 当cwnd < ssthresh时,使用慢开始算法;
    • 当cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法;

慢启动

在慢启动的时候,cwnd的值以一个MSS开始并且每当传输的报文段首次被确认就增加1个MSS(有两个被确认就增加两个,成指数增长)。这个过程每过一个RTT,发送速率就成倍增长。所以在慢开始阶段以指数增长。

结束指针增长的情况、

  • 存在一个由超时指示的丢包时间,TCP发送方将cwnd设置为1并重新开始慢启动过程,并且还将慢开始门限值ssthresh设置为ssthresh设置为cwnd/2。
  • 当cwnd到达或者超过ssthresh的值时,会结束慢启动,转移到拥塞避免模式。
  • 如果检测到三个冗余ACK,TCP执行快速重传并进入快速回复状态。

拥塞避免

因为在这个状态下,cwnd的值大约是上次遇到拥塞状态时的值的一半,所以每个RTT只是将cwnd的值加一个MSS。

结束拥塞避免的情况

  • 出现超时重传,TCP发送方将cwnd设置为1并重新开始慢启动过程,并且还将慢开始门限值ssthresh设置为ssthresh设置为cwnd/2。
  • 当收到三个冗余的ACK,TCP将cwnd的值减半,将ssthresh的值记录为cwnd的值的一半。

快速恢复

发送方收到三个重复确认,就知道现在只是丢失了个别的报文段,于是开始启动快速回复算法。

  • 发送方将慢开始门限值ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半,开始执行拥塞避免算法
  • 也有将cwnd的值再增大一些,加上三个ACK,所以为ssthresh+3;

TCP---拥塞控制相关推荐

  1. tcp拥塞控制编程实验c语言代码,C语言 计算机网络TCP拥塞控制模拟程序

    帮助你更好地认识TCP拥塞控制的机制 #include "stdio.h" #include "stdlib.h" void show() { //system ...

  2. TCP流量控制-TCP拥塞控制 拥塞控制与流量控制的区别

    拥塞控制与流量控制的区别: 拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机.所有的路由器,以及与降低网络传输性能有关的所有因素. 相反,流量控制往往是指点对点的通信量的控制 ...

  3. 5.3.5 TCP拥塞控制

    5.3.5 TCP拥塞控制

  4. 【计算机网络】传输层 : 总结 ( TCP / UDP 协议 | 寻址与端口 | UDP 协议 | TCP 协议特点 | TCP 连接释放 | TCP 流量控制 | TCP 拥塞控制 ) ★★★

    文章目录 一.传输层 TCP / UDP 协议 ★ 二.寻址端口号 ★ 三.UDP 协议特点 四.UDP 协议首部格式 五.UDP 校验 六.TCP 协议 特点 ★ 七.TCP 报文段首部格式 八.T ...

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

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

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

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

  7. s6-8 TCP 拥塞控制

    TCP 拥塞控制  虽然网络层也试图管理拥塞,但是,大多数繁重的任务是由TCP来完成的,因为针对拥塞的真正解决方案是减慢数据率  分组守恒:当有一个老的分组离开之后才允许新的分组注入网络  TC ...

  8. ​TCP 拥塞控制详解

    作者:engleliu,腾讯 PCG 开发工程师 本文主要介绍 TCP 拥塞控制算法,内容多来自网上各个大佬的博客及<TCP/IP 详解>一书,在此基础上进行梳理总结,与大家分享.因水平有 ...

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

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

  10. 计算机网络之传输层:7、TCP拥塞控制

    传输层:7.TCP拥塞控制 TCP拥塞控制: 拥塞控制算法: 慢开始和拥塞避免: 快重传和快恢复: TCP拥塞控制算法综合: TCP拥塞控制: 拥塞控制算法: 发送方维持一个叫做拥塞窗口(cwnd) ...

最新文章

  1. python中strip函数_让你整明白python strip函数妙用
  2. python安装包-在Python中安装包的三种方法
  3. helloworld:一个完整的WCF案例
  4. 【POJ - 2376】Cleaning Shifts (贪心)
  5. 广州科目三考试 不得不看的十条提醒(图)
  6. vue 接口节流_vue输入节流,避免实时请求接口的实例代码
  7. 论文阅读 | DasiamRPN
  8. 力扣226-翻转二叉树(C++,附思路)
  9. 如何通过破解hash来获取管理员密码(转)
  10. 算法工程师的冰与火之歌
  11. phpmyadmin/scripts/setup.php,Linux下phpMyAdmin安装过程中的问题解决
  12. 数据可视化工具的特点有哪些
  13. javascript的dom选择器
  14. Ubuntu安装搜狗拼音输入法(中文输入法)
  15. 关于机器人运动学与动力学建模的几点领悟
  16. 【jQuery进阶】子菜单插件Slight Submenu
  17. 励志电影排行榜2011
  18. sql sever 存储过程总结及实验
  19. 配置MyBatis Plus 的乐观锁功能
  20. 关于对齐次裁剪空间及HLSL语义的理解

热门文章

  1. 归一化相关 matlab,matlab – 归一化互相关的基础知识
  2. 【Java应用程序开发】【期末复习题】【2022秋】【答案仅供参考】
  3. JXL开发Excel文档中文教程
  4. axios下载压缩包的处理方式
  5. cas 部署过程中遇到的一些问题(持续更新)
  6. 数据库设计实例 教务管理系统
  7. Xception简介
  8. 【C语言】之实现回文数判断
  9. (原创)暴力破解西电校园网密码
  10. 《Java SE实战指南》05-07:分隔符(Separators)