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

计算机网络第3章-TCP协议(2)

TCP拥塞控制

TCP拥塞控制的三种方式:

慢启动、拥塞避免、快速恢复

慢启动

当一条TCP连接开始时,cwnd的值是一个很小的MSS值,这使得初始发送速率大约为MSS/RTT。

在慢启动状态,cwnd的值以1个MSS开始并且每当传输的报文段首次被确认就增加一个MSS,直

到出现超时或者丢包现象。

每增加一个MSS的长度,就会多发送一个MSS长度的报文段。

因此慢启动状态下,发送速率是以指数形式增加的。

例如:

一个MSS/RTT的速率被记作一个α。

则第一次传输后为2α。(2的一次方)

第二次传输后为4α。(2的二次方)

第三次传输后为8α(2的三次方)

慢启动的结束也是很有意思的:

如果存在一个拥塞,则TCP发送方将cwnd重新置为1并重新开始慢启动过程。

并且将第二个状态变量ssthresh(“慢启动阈值”)设置为cwnd/die

第二种方式是:

速率直接与ssthresh相关联,即检测到拥塞的时候,ssthresh就减少一半,当到达或者超过

ssthresh时,结束慢启动并且TCP转移到拥塞避免模式。

最后一种方式:

检测到三个亢余ACK,TCP就执行一种快速重传,并且进入到快速恢复状态。

拥塞避免

一旦进入拥塞避免状态,cwnd的值大约为上一次遇到阻塞的值的一半。

这也导致TCP无法通过一个RTT就将cwnd的值翻倍,而时每个RTT只将cwnd的值增加一个MSS,

而不是像慢启动一样进行指数形式增长。

拥塞避免的结束和慢启动差不太多,如果出现超时,cwnd的值被置为1个MSS。

丢包出现,ssthresh的值被置为cwnd的一半。

快速恢复

在快速恢复中,对于引起TCP进入快速恢复状态的缺失报文段,对收到的每个亢余ACK,cwnd增

加一个MSS。最终,当对丢失报文段的最后一个ACK到达时,TCP在降低cwnd后进入拥塞避免状态。

但是如果出现超时,快速恢复在执行如同在慢启动和拥塞避免中相同的动作后,迁移到慢启动状态。

总结

TCP拥塞控制在每个RTT时间内,cwnd线性(加性)增加1MSS,然后出现三个亢余ACK事件时,

cwnd减半(乘性减)。

因此TCP拥塞控制通常被称为“加性增、乘性减。”

下面是TCP拥塞控制造成的一种“锯齿”行为。

http://www.lryc.cn/news/212740.html

相关文章:

  • SQL注入——二次注入漏洞
  • 【c++|opencv】二、灰度变换和空间滤波---1.灰度变换、对数变换、伽马变换
  • 【vue3】子传父-事件总线-mitt(子组件派发事件,父组件接收事件和传递的参数)
  • 【杂记】java 大集合进行拆分
  • select...for update 锁表了?
  • 使用ControlNet生成视频(Pose2Pose)
  • 基于Docker使用Minikube
  • Stable Diffusion系列(一):古早显卡上最新版 WebUI 安装及简单操作
  • ruoyi框架前端vue部署生产环境教程
  • leetcode第369周赛
  • 如何在维格云中自动新增一行或多行数据?
  • Three.js 开发引擎的特点
  • k8s声明式资源管理方式
  • unity性能优化__Statistic状态分析
  • Linux Spug自动化运维平台公网远程访问
  • 3DES算法
  • 手机电池寿命检测
  • Vue项目搭建及使用vue-cli创建项目、创建登录页面、与后台进行交互,以及安装和使用axios、qs和vue-axios
  • AVL树、红黑树的介绍和实现[C++]
  • meta分析的异质性检验指标如何计算?
  • 如何在mac 安装 cocos 的 android环境
  • 作为网工有必要了解一下什么是SRv6?
  • Jmeter(十八):硬件性能监控指标详解
  • 【ARM Trace32(劳特巴赫) 使用介绍 2 -- Trace32 cmm 脚本基本语法及常用命令】
  • 2023年第七期丨全国高校大数据与人工智能师资研修班
  • 一文获取鼎捷医疗器械行业数智化合规敏态方案
  • 2023最新版本 FreeRTOS教程 -1-标准库移植FreeRTOS
  • python笔记(函数参数、面向对象、装饰器、高级函数、捕获异常)
  • JAVA命令总结
  • 删除的PPT怎么找回来?4个必备恢复方法!