拥塞控制,图文并茂(挺丰富,借鉴较多大佬的思想)
背景:
为了方便解释,假设我们主机A向主机B传输数据
我们知道,两台主机在传输数据包的时候,如果发送方迟迟没有接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。
然而实际的情况有可能此时有太多主机正在使用信道资源,导致网络拥塞了,而A发送的数据包被堵在了半路,迟迟没有到达B。这个时候A误以为发生了丢包情况,会重新传输这个数据包。
结果是又发一个重复包,又去占用信道资源,使网络更加拥塞。因此我们要进行拥塞控制。
如何知道网络拥塞?
A与B建立连接后,就可以向B发送数据了,但是A并不知道一次连续发送多少个数据包合适,我也把一次发送多少个数据包称为拥塞窗口,用N代表此时拥塞窗口的大小吧。
我们一般采用慢开始+拥塞控制去探测网络情况,出现超时现象,说明网络有问题了就需改善:
慢开始:指数增加拥塞窗口大小
拥塞避免:线性增加拥塞窗口大小
背景:
为了方便解释,假设我们主机A向主机B传输数据
我们知道,两台主机在传输数据包的时候,如果发送方迟迟没有接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。
然而实际的情况有可能此时有太多主机正在使用信道资源,导致网络拥塞了,而A发送的数据包被堵在了半路,迟迟没有到达B。这个时候A误以为发生了丢包情况,会重新传输这个数据包。
结果是又发一个重复包,又去占用信道资源,使网络更加拥塞。因此我们要进行拥塞控制。
如何知道网络拥塞?
A与B建立连接后,就可以向B发送数据了,但是A并不知道一次连续发送多少个数据包合适,我也把一次发送多少个数据包称为拥塞窗口,用N代表此时拥塞窗口的大小吧。
我们一般采用慢开始+拥塞控制去探测网络情况,出现超时现象,说明网络有问题了就需改善:
慢开始:指数增加拥塞窗口大小
拥塞避免:线性增加拥塞窗口大小
cwnd:拥塞窗口大小
ssthresh:指数增长阈值,达到这个阈值,窗口数量增加规律从指数变为线性
如果发生了超时现象(没有收到ACK,定时器到了),那么会从1开始一个一个传(打回原形),并且把指数增长的阈值设置为刚才发生超时的拥塞窗口数量的一半。
超时现象不一定是网络拥塞导致
超时现象可能是因为确认报文中途损坏了。因此防止这种情况出现,我们是通过冗余ACK来处理的。我们知道数据包是有序号的,如果A向B发送M1,M2,M3,M4等数据包,如果B收到了M1,M2,M4,..一直没有收到M3,这个时候接受方会重复确认M2,为了告诉发送发M3还没有收到,可能丢失了。
当A连续收到了三个确认M2的ACK,且M3超时事件还没有发生。A就知道M3可能丢失了,这个时候A不用等到M3设置的计时器过期,而直接快速重传M3,并把指数增加的阈值(7)设置当前拥塞窗口大小(14)的一半,并从这个阈值的时候开始继续传输。
这就是快重传与快恢复的过程
总结
其中我们包含了两种情况,因为重传计时器到期导致超时与三次重复确认的情况,过程图为下:
这种情况是TCP其中一个版本A。
另一TCP版本B,这两种情况下,都是从1开始重传,没有快恢复这种情况。
发送方让自己的发送窗口大小取为为拥塞窗口和接收方的接受窗口中较小的一个。
接受窗口又设计到流量控制:请转入下文
https://blog.csdn.net/qq_40262372/article/details/115787319
借鉴地址:
https://mp.weixin.qq.com/s?__biz=Mzg2NzA4MTkxNQ==&mid=2247485204&idx=1&sn=27daef390eec05b3d5db7cebcdcb4b7c&source=41#wechat_redirect
拥塞控制,图文并茂(挺丰富,借鉴较多大佬的思想)相关推荐
- Stuart Russell对话姚期智:为全人类设计AI系统,可以借鉴墨子「兼爱」思想丨2023智源大会AI安全与对齐论坛...
导读 在2023智源大会「AI安全与对齐论坛」的对话环节,加州大学伯克利分校教授Stuart Russell与图灵奖得主.中国科学院院士姚期智针对「如何设计对人类有益的AI」.「如何管控AI技术」,以 ...
- 网络攻防学习路线[菜鸟借鉴其他大佬]
以下内容是本菜鸟借鉴的其他大佬的学习路线 希望大家有好的学习课程可以在评论区一起分享交流 第一周:入门 在学习的时候,你起码需要对常见的黑客术语需要掌握,了解术语的话可以去看看这里的百度文库,写的还是 ...
- 想问下各位大佬,软件测试实习生面试一般都问啥啊?
面试官是HR的话一般不会问你很技术的问题,因为他们也不懂哈哈哈哈,HR问的问题无非就这几个:你的性格.优势.你上一家的实习经验(如果简历上有实习经历的话),而且如果你上一家的实习岗位和软件测试不同,H ...
- Springboot搭建个人博客系列
前言 为什么想要搭建这个博客? 我还记得,在大二寒假的某天,同往常一样的在家解决这某个bug,不停地问度娘,很巧的碰到了一个同行在他的博客中完美的记录了我的bug的解决方案,随后我又看了看他写的其他博 ...
- Android 精华 - 收藏全集 -
Android - 收藏集 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你能获得这些料: 知道setContentView()之后发 ...
- PAT乙级全题解存档
1001 害死人不偿命的(3n+1)猜想 #include <iostream> using namespace std;int main() {int n, cnt = 0;cin &g ...
- 关于numpy,torch中seed()方法的一些理解
首先举几个使用seed()函数的例子: # 生成随机数,以便固定后续随机数,方便复现代码 random.seed(args.seed) # 没有使用GPU的时候设置的固定生成的随机数 np.rando ...
- 初学文本摘要——综述报告
** 本报告是本人在自学自然语言处理文本摘要方向初期研读综述性论文.博客.网站等后总结的综述报告. ** 主要内容: 1)文本摘要简介(是什么?) 2)文本摘要现状(怎么样?) 3)文本摘要分类(有哪 ...
- HTML5+css+jquery网页设计+加静态网页部署到服务器上
文章目录 前言 一.使用软件 二.实际效果 主页面效果 关于我们界面效果 个人博客页面效果 收藏视频页面效果 三.js实现的动态效果概述 四.将网页部署在服务器上 购买服务器和域名 域名解析 SSL证 ...
- i春秋-Web(一)
前言 做了几道i春秋的Web题,所以总结一下. Web1:爆破-1 题目提示:某六位变量.查看题目,发现是代码审计 <?php include "flag.php"; $a ...
最新文章
- 让炼丹更玄学!苏大博士生用「天干地支」生成随机种子,项目已开源
- 不限文件类型的ftp服务器,ftp服务器文件类型
- Puppet基础篇3-安装Puppet前期的准备工作
- 2017.5.6 表达式的值 思考记录
- sql limit 子句_SQL按子句概述和示例
- 设置,获取和删除Cookies
- 关于笔记本品牌的笑话!
- Java网络编程-简易聊天室源码分享
- Broadcom WICED Wi-Fi 研究BCM943362WCD4之STM32F205+43362通信
- 怀念经理用鼠标线联网的1990年代当时
- Mac电脑无法从Photoshop 2020作为插件访问DeNoise AI的解决办法
- windows系统镜像修复计算机,Win7操作系统下系统还原和映像修复方法
- EMC设计经典15问
- C++知识小屋(3):用虚基类构造仙法·风遁·螺旋手里剑
- Blender-绑定动画Auto-Rig Pro 重映射动捕FBX 小K结合 的问题以及解决
- Win10文件夹搜索功能失效怎么办?
- opencv findContours()轮廓特征分析大全(求面积、周长、几何矩、质心、凸包、最小外接矩形、最小外接三角形、最小外接椭圆等)
- Python获取用电情况数据-AHPU校园网
- android mediaplayer 实现歌曲边播放边下载
- 2022-2028全球及中国免下车洗车系统行业研究及十四五规划分析报告
热门文章
- python os.path.splitext()的用法_Python中的os.path路径模块中的操作方法总结
- 删除时存在依赖_npm依赖管理那些事
- C++中常引用的注意事项以及常引用和非常引用之间的转换
- python脚本画pie饼图_小白学Python(11)——pyecharts,绘制饼图 Pie
- 【LA3942】Remember the World(初识前缀树Trie----模版题 + dp)
- 共模电感适用的频率_电感基础知识入门
- jwt如何加盐_手把手教你使用JWT实现单点登录
- 带有RNN循环神经网络的机器学习 4 NLP 从零到英雄 ML with Recurrent Neural Networks
- 自动驾驶 2-1 传感器和计算硬件 Sensors and Computing Hardware
- 正向传播、反向传播和计算图