博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【图解】拥塞控制
阅读量:1985 次
发布时间:2019-04-27

本文共 571 字,大约阅读时间需要 1 分钟。

在这里插入图片描述

文章目录

拥塞控制与网络的拥堵情况相关联,而流量控制与接收方的缓存状态相关联。

拥塞控制

了解TCP三次握手的朋友都知道,两台主机在传输数据包的时候,如果发送方迟迟没有收到接收方反馈的ACK,那么发送方就会认为它发送的数据包丢失了,进而会重新传输这个丢失的数据包。

然而实际情况有可能此时有太多主机正在使用信道资源,导致网络拥塞了,发送的数据包被堵在了半路,迟迟没有到达。这个时候发送方误认为是发生了丢包情况,会重新传输这个数据包。

结果就是不仅浪费了信道资源,还会使网络更加拥塞。因此,我们需要进行拥塞控制。


探测网络拥塞情况

无论如何,在探测的过程中都会出现瓶颈,或者说,类似于天花板了。

为了平衡各方面效率,使用以下方式:

在这里插入图片描述

前期指数增长,到达阈值之后,就以一个一个线性的速度来增长。我们也把指数增长阶段称之为慢启动,线性增长阶段称之为拥塞避免


超时 == 拥塞?

有可能是因为某个数据包出现了丢失或者损害了,导致了这个数据包超时事件发生了

为了防止这种情况,我们是通过冗余 ACK来处理的。我们都知道,数据包是有序号的,如果A给B发送M1, M2, M3, M4, M5…N个数据包,如果B收到了M1, M2, M4…却始终没有收到M3,这个时候就会重复确认M2,意在告诉A,M3还没收到,可能是丢失

在这里插入图片描述

我们也把这种情况称之为快速恢复


转载地址:http://gyuvf.baihongyu.com/

你可能感兴趣的文章
利用C++的模板模拟.net的代理语法
查看>>
在C++中模拟委托事件的方法(一)
查看>>
在C++中模拟委托事件的方法(二)
查看>>
C++中模拟委托事件的方法(三)
查看>>
在C++中模拟委托事件的方法(四)
查看>>
在C++中模拟委托事件的方法(五)
查看>>
在C++中模拟委托事件的方法(六)
查看>>
一些有意思的算法代码
查看>>
SSL工作原理
查看>>
Nginx源码剖析之内存池,与内存管理
查看>>
企业级服务器设计与实现经验之开篇
查看>>
企业级服务器设计与实现经验之系统框架(一)
查看>>
企业级服务器设计与实现经验之系统框架(二)--功能/应用服务器主体框架
查看>>
企业级服务器设计与实现经验之插件系统基础篇
查看>>
C++转向C#的疑惑系列文章转载
查看>>
C++转向C#的疑惑:难道C#中没有拷贝构造函数 ?
查看>>
C++转向C# 的疑惑:析构函数及相关
查看>>
C++转向C# 的疑惑:事件的机制究竟是什么?
查看>>
C++转向C#的疑惑:C#中类间通信方法初探
查看>>
项目管理实战之团队管理
查看>>