概述
TCP
拥塞控制的过程。(四个状态都要解释清楚)
-
在某段时间里,对网络中某一资源的需求超过可用范围,也就是供不应求,网络性能就会下降。这种状况,就是
拥塞
-
研究的前提
- 数据是单方向传送的,另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送方发送窗口的大小由网络的拥塞程度来决定
- 以最大报文段MSS的个数为讨论问题的单位,而不是以字节为单位
-
若出现拥塞而不控制,整个网络的吞吐量将随输入负荷的增大而下降
-
发送方要维护一个
拥塞窗口cwnd
的状态变量,其值取决于网络的拥塞程度,并且动态变化- 拥塞窗口
cwnd的维护原则
:只要网络没有出现拥塞,拥塞窗口就在增大一些;只要出现拥塞,拥塞窗口就减小一些 - 判断出现
网络拥塞的依据
:没有按时收到应当到达的确认报文(即发生超时重传)
- 拥塞窗口
-
发送方将拥塞窗口作为发送窗口swnd,即swnd=cwnd
-
维护一个
慢开始门限ssthresh
状态变量:- 当cwnd<ssthresh时,使用慢开始算法
- 当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法
- 当cwnd=ssthresh时,既可以使用慢开始算法,也可以使用拥塞避免算法
-
四种拥塞控制算法:慢开始(slow-start)、拥塞避免(congestion avoidance)、快重传(fast retransmit)、快恢复(fast recovery)
-
若重传计时器超时,则判断网络可能出现拥塞:
- 将ssthresh值更新为发生拥塞时cwnd的一半
- 将cwnd值减小为1,并重新开始慢开始算法
-
慢开始
- 慢开始算法下,拥塞窗口数量随着传播轮次指数增长,不断翻倍
- 慢开始是指一开始的报文段少,而不是拥塞窗口增长速度满
-
拥塞避免
- 拥塞避免算法下,拥塞窗口数量随着传播轮次,不断+1,线性增长
- 拥塞避免算法无法完全避免拥塞,只是让拥塞窗口线性增长,网络不容易出现拥塞
---------------慢开始和拥塞避免算法是最开始出现的---------------
有时个别报文段丢失会被误认为发送拥塞,错误减小拥塞算法,降低效率。为了解决这个问题,增加了后两个算法
-
快重传
-
快重传算法
可以让发送方尽快知道发生了个别报文段的丢失
-
快重传就是让
发送方尽快开始重传
,而不是等待超时重传计时器超时
再重传- 要求接收方不要等待发送数据时才进行稍待确认,而是要
立即确认
。 - 即使收到了失序的报文段也要立即发出对已收到的报文段的
重复确认
。 - 发送方一旦受到了三个连续的重复确认,就将相应的报文段
立即重传
,而不是等待该报文段的超时重传计时器超时再重传 - 快重传可以使整个网络的吞吐量提高20%
- 要求接收方不要等待发送数据时才进行稍待确认,而是要
-
-
快恢复
- 发送端收到了
三个重复确认
,就知道现在只是丢失了个别报文段,启动快恢复算法。 发送方将慢开始门限ssthresh值和拥塞窗口cwnd值调整为当前窗口的一半;开始执行拥塞避免算法
- 也有的快恢复实现十八恢复开始时二点拥塞窗口值cwnd增大一些,也就是ssthresh+3
- 既然发送方收到3个重复确认,表面有3个数据报文段已经离开了网络
- 这三个报文段不再消耗网络资源而是停留在接收缓存中
- 所以现在的网络不是堆积了报文段,而是减少了,可以把窗口扩大些
- 发送端收到了
作者:Xavi
链接:https://juejin.cn/post/6945802089050144805
来源:掘金
最后
以上就是热心裙子为你收集整理的面试题-计网:TCP拥塞控制的过程。(四个状态)的全部内容,希望文章能够帮你解决面试题-计网:TCP拥塞控制的过程。(四个状态)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复