当前位置: 首页 > news >正文

3.7 TCP拥塞控制

1.TCP拥塞控制简介

2.如何检查拥塞

3.拥塞控制策略

4.ssthresh + 3 * MSS


1.TCP拥塞控制简介

TCP的拥塞控制是端到端的拥塞控制机制, 路由器不提供给主机有关拥塞的反馈信息a.路由器的负担较轻b.符合网络核心简单的tcp/ip架构原则端系统根据自身得到的信息判断是否发送拥塞, 从而采取动作

2.如何检查拥塞

a.轻微拥塞: 有关某个段的三次重复ack, 网络这时还能够进行一定程度的传输b.拥塞: 某个段超时(超时时间到了, 某个段的确认没有来)- 原因1: 网络拥塞(某个路由器缓冲区没有空间了, 被丢弃)- 原因2: 出错被丢弃了(各级错误, 没有通过校验, 被丢弃)一旦超时, 就认为是拥塞了, 有一定的误判, 但是总体控制方向是对的

3.拥塞控制策略

a.拥塞窗口: 在未收到确认的情况下, 发送方最多发送的字节数; 它是发送方根据网络拥塞情况计算的一个值, 它只考虑网络状况b.接收窗口: 由接收方告知发送方法, 表示接收方还能接收多少数据c.发送窗口: 实际用来限制发送数据的窗口, 它同时考虑网络状况(拥塞窗口)和接收方的接收能力(接收窗口), 其上限为min(拥塞窗口, 接收窗口)

1).慢启动 - 谨慎的起步阶段a.比喻: 你刚上高速, 不知道路况如何; 为了安全, 你从一个很低的速度(1个mss)开始, 然后每经过一个往返时间(rtt), 就把速度翻一倍(拥塞窗口cwnd指数增长)-1个包 -> 收到ack ->2个包- 收到2个ack ->4个包- 收到4个ack ->8个包b.技术要点: 虽然是慢启动, 但它的增长非常迅速(指数级); 它不会无休止地增长下去, 当窗口增长到一个慢启动阈值(ssthresh), 就会进入下一个阶段: 拥塞避免c.如果在慢启动期间检测到超时(严重拥堵), tcp会认为网络状况很差; 它会:- 将ssthresh设置为当前拥塞窗口的一半- 将拥塞窗口cwnd重置为1- 重新开始慢启动过程

2).拥塞避免 - 稳健的巡航阶段a.比喻: 你的车速已经挺快了, 接近你认为的安全上限(ssthresh); 为了不引发拥堵, 开始小心翼翼地线性加速, 每经过一个往返时间(rtt), 只将窗口增加1b.技术要点:- 这是一个加法增大的过程, 增长速度远慢于慢启动- 这个阶段的目标是试探网络的极限容量, 同时尽量避免造成拥塞

3).快重传 - 机智的乘客提醒a.比喻: 你后面的车(接收端)连续按了三次喇叭(发送了三个重复的ack), 告诉你, 下一个期待的包裹没收到, 但收到了更后面的包裹; 这很大概率只是丢了一个包(偶发小事件), 而不是整条路大塞车b.技术要点: 发送方只要连续收到3个重复的ack, 就立刻重传那个对方期望的数据包, 而不用等待重传计时器超时; 大大减少了等待时间, 提高了效率

4).快恢复 - 平滑的减速策略a.比喻: 接到连续三次喇叭提醒后, 你知道只是丢了一个包, 路况还行; 所以不会把车速直接降到起步, 而是降到一个合理的速度(新的ssthresh), 然后直接进入拥塞避免阶段, 继续线性增长b.执行快重传后:- tcp将ssthresh设置为当前拥塞窗口的一半- 将拥塞窗口cwnd设置为ssthresh(有的实现会设为ssthresh + 3, 因为那3个重复的ACK说明有3个包已经成功到达了)- 开始执行拥塞避免算法(线性增长): 如果发生的是超时, 说明网络可能完全不通, 情况更严重, 这时TCP会退回到最保守的慢启动阶段(cwnd=1)

4.ssthresh + 3 * MSS

1).TCP拥塞控制的核心思想之一是包守恒: 只有在确认一个包已经离开网络时, 才允许一个新的包进入网络; 当发送方收到3个重复的ack时, 它推断出以下三件事同时发生:a.有一个包丢失了b.有三个包已经成功到达了接收方, 并且被接收方缓存了; 因为每收到一个失序的包, 接收方都会发回一个重复ACK; 3个重复ACK意味着有3个后续的包已经成功送达c.既然这3个包已经离开了网络(到达了接收端), 那么网络中就空出了3"位置"根据包守恒原则, 网络中空出了3个位置, 发送方就被允许再注入3个新的包到网络中, 以保持网络中的总数据量不变2).+3的优点: 快速恢复阶段保持数据流的不间断, 因为我们在重传丢失的报文段的同时, 还可以发送新的报文段, 从而更有效地利用网络带宽
http://www.dtcms.com/a/562025.html

相关文章:

  • 网站建设代码南京市浦口区建设局网站
  • 电商开放平台API接口的日常实际应用
  • Agent上下文压缩之战!阿里AgentFold v.s.字节FoldAgent
  • DCRNN代码解析
  • 国内特效比漂亮的网站网站备案收费
  • 做爰试看的网站做网站的素材都在哪里下载
  • 英伟达开源了其 Aerial 软件,以加速 AI 原生 6G 的发展。
  • 网站后台慢厚街网站建设多少钱
  • 【Android】消息机制
  • 资料分析-平均数(和比重很像,可以对比学习)
  • 注解(内置注解、元注解、自定义注解)
  • nginx安装与升级
  • 开网站卖茶要怎么做设计很好的视觉很棒的网站
  • Day02计算机网络网络层学习总结:从协议到路由全解析
  • 网站建设公司 预算培训机构前端开发
  • 文献管理 Mendeley合并两个论文数据库
  • 泰兴网站推广东阳厂家高端网站设计
  • 如何利用 DeepSeek 提升工作效率-test
  • 青岛开发区做网站设计的wordpress猜你喜欢插件
  • Windows 10安装Linux虚拟机完整指南:三种方法详解
  • mysql数据库的sql优化以及explain周期字段详解案例【爽文】
  • wordpress 站点语言优秀网站h5案例分享
  • 建网站要多长时间功能最多的wordpress主题
  • 计算机图形学·5 OpenGL编程2 完整程序
  • 透明化战场:俄罗斯如何适应数字战争时代
  • 网站程序语言那个好网站建设合同封面
  • a站是指哪个网站深圳网站建设公司推荐乐云seo
  • C语言内功强化之const修饰指针
  • spiderdemo第八题
  • 青州网站搭建重庆安全建设工程信息网