我是靠谱客的博主 寂寞雪碧,最近开发中收集的这篇文章主要介绍TCP协议的拥塞控制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

防止过多的数据注入到网络中。几种拥塞控制方法:慢开始、拥塞避免、快重传、和快恢复。

发送方需要维护一个叫做拥塞窗口(cwnd)的状态变量。

 慢开始

把拥塞窗口cwnd设置一个最大报文段的数值,而在每收到一个对新的报文段的确认后,把拥塞窗口增加至多一个报文段的数值。每经过一个传输伦次,拥塞窗口cwnd就加倍。为了防止拥塞窗口cwnd增长过大引起网络拥塞,还需要设置一个慢开始门限ssthresh状态变量。

当cwnd<ssthresh时,使用慢开始算法。

当cwnd>ssthresh时,停止使用慢开始算法而改用拥塞避免算法。

当cwnd=ssthresh时,即可以用慢开始算法,也可以使用拥塞避免算法。

拥塞避免

让拥塞窗口cwnd缓慢的增大,每经过一个往返时间RTT拥塞窗口增加1.而不是加倍。这样拥塞窗口cwnd按线性缓慢增长。

无论在慢开始阶段还是在拥塞避免阶段,只要发现网络出现阻塞(其根据就是没有收到确认),就要把慢开始门限ssthresh设置为出现拥塞时的发送窗口值的一半,然后把拥塞窗口值cwnd设置为1,执行慢开始算法。目的是要迅速减少主机发送到网络中的分组数,使得路由器有足够的时间把积压的分组处理完毕。

快重传

有时有个别报文段在网络中丢失,但并未发生网络拥塞,如果发送方迟迟收不到确认,就会产生超时,就会误认为网络发生了拥塞。这就会导致发送方错误地启动慢开始,把拥塞窗口cwnd又设置为1,因而降低了传输效率。

快重传算法可以避免这个问题。快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重发确认,使发送方及早知道有报文段没有到达对方。

发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待重传计时器到期。由于发送方尽早重传未被确认的报文段,因此采用快重传后可以使整个网络吞吐量提高。

快恢复

当发送方连续收到三个重复确认,就会把慢开始门限ssthresh减半,接着把cwnd值设置为慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法,使拥塞窗口可以缓慢地线性增长。

在采用快恢复算法时,慢开始算法只是在TCP连接建立时和网络出现超时时才使用。

采用这样的拥塞控制方法使得TCP的性能有明显的改进。

最后

以上就是寂寞雪碧为你收集整理的TCP协议的拥塞控制的全部内容,希望文章能够帮你解决TCP协议的拥塞控制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部