TCP 拥塞控制

 虽然网络层也试图管理拥塞,但是,大多数繁重的任务是由TCP来完成的,因为针对拥塞的真正解决方案是减慢数据率
 分组守恒:当有一个老的分组离开之后才允许新的分组注入网络
 TCP希望通过动态维护窗口大小来实现这个目标

拥塞检测 (Congestion detection)
 所有的互联网TCP算法都假定超时是由拥塞引起的,并且通过监视超时的情况来判断是否出现问题
拥塞控制 (Congestion prevention)
 当一个连接建立的时候,双方选择一个合适的窗口大小,接收方根据自己的缓冲区大小来指定窗口的大小。
 如果发送者遵守此窗口大小的限制,则接收端不会出现缓冲区溢出的问题,但可能由于网络内部的拥塞而发生问题

互联网解决方案应该是认识到两个潜在的问题的:网络容量,接收者容量,然后单独地处理这两个问题
   为此,每个发送者维护两个窗口:

接收者窗口 大小反映了目前窗口的容量 (容易控制)
拥塞窗口 大小反映了网络目前的容量(难于控制)
发送者发送的数据字节数是两个窗口中小的那个窗口数

决定拥塞窗口的大小

慢启动算法(Slow Start) (尝试的过程):
当连接建立的时候,发送者用当前使用的最大数据段长度初始化拥塞窗口,然后发送一个最大的数据段
如果在定时器超期之前收到确认,则将拥塞窗口翻倍,然后发送两个数据段……直至超时(或达到接收方窗口的大小)
确定出拥塞窗口的大小
     如:如果试图发送 4096 字节没有问题,但是发送8192字节的时候,超时没有收到应答,则拥塞窗口设为4096个字节

慢速启动算法
按指数增长趋势定义拥塞窗口大小cwnd
初始:cwnd0 = MaxSegL(当前数据段长度)
增长:cwnd1 = 2 cwnd0
      cwnd2 = 2 cwnd1
        • • •
截止:达到接收窗口大小或超时

慢速启动算法图例

TCP 拥塞控制

 除了使用接收者窗口和拥塞窗口,TCP拥塞控制还是用了第三个参数,阈值(threshold),初始化为64K
 当一个超时发生的时候,阈值降为当前拥塞窗口的一半,同时将拥塞窗口设为一个最大数据段的长度
 使用慢启动算法来决定网络的容量,拥塞窗口增长到阈值时停止指数增长
 从这个点开始,每次成功的传输都会让拥塞窗口线性增长(即每次仅增长一个最大的数据段长度)

拥塞控制算法-CWin指数增长

拥塞控制算法- cwnd线性增长

拥塞控制算法-重新慢速启动

注意
 快速恢复

拥塞控制算法

定义初始拥塞窗口阈值和窗口大小
Threshold 0 和 cwnd 0
初始超时
    拥塞窗口阈值减半:Threshold1 = CWND / 2
cwnd二进制指数增长至确认超时

cwnd线性增长至确认超时
 拥塞窗口值减半:Threshold n = CWND n / 2
 定义窗口大小:cwnd = cwnd 0
重新开始慢速启动过程

注意
 如果收到一个ICMP抑制分组( ICMP source quench)并被送给TCP传输实体 ,则这个事件被当作超时对待

小结:

 TCP拥塞控制遵循分组守恒定律
 两种因素引起拥塞警报
接收方处理不过来
通信子网中出现拥塞
 处理拥塞的具体方法
Window size
Congestion window
 CWND通过慢起动方法尝试而来
 通过阈值调节CWND尝试的精度

s6-8 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. ​TCP 拥塞控制详解

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

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

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

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

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

最新文章

  1. mysql 小型机_小型机宕机问题 - Oracle数据库管理 - ITPUB论坛-中国专业的IT技术社区...
  2. 2019年5月26日
  3. java的this_java的this是什么意思
  4. [翻译] FBNetworkReachability
  5. ZH奶酪:Ionic通过angularJS+tabs-item-hide实现自定义隐藏tab
  6. .net core3.0上传文件出现404_使用FTP代理功能连接空间上传文件(解决改善用户上传慢的问题)...
  7. 超图桌面版下载、安装、使用入门
  8. 微信小程序【腾讯云开发】创建并上线小程序项目(涉及-数据库操作)
  9. Shell基础知识(三)
  10. 嘀嗒还是滴答_2021年顺风车车主口碑榜!滴滴、滴答、一喂顺风车成TOP3
  11. 中小企业集群ntpd服务搭建
  12. 心法利器[57] | 文本多分类问题经验
  13. 《你和你的研究》全文
  14. 测光--摄影基础理论(2)
  15. 营业执照、组织机构代码、税务登记号规则
  16. 3小时脱销!!!《我真有绝招》项目要点揭露!值得每个做游戏的玩家学习!...
  17. 转 让FPGA替代GPU的6大顾虑,你确定不看看吗?
  18. 马家河子java,【JAVA】共同的森林
  19. python怎么输出中文
  20. 使用Nmap进行端口扫描和服务识别

热门文章

  1. 严格模式 华为_华为千元机虽然好,但是千万别乱选,这三款才是内行人的最爱...
  2. 路由到另外一个页面_一个简单的Vue按钮级权限方案
  3. Azkaban通过API动态传递参数
  4. 网络安全-Internet安全体系结构
  5. 从零开始学习docker(零)简单介绍Dockerfile
  6. 求你了,别再用 print 调试代码了
  7. 骚操作!有了这款神器,轻轻松松用Python写APP!(文末彩蛋)
  8. 重磅!李宏毅教授机器学习训练营
  9. 下列不是python对文件的写操作方法的是_Python—文件读写操作
  10. aspectj表达式如何书写_化学平衡常数的表达式书写