首页 > 代码库 > TCP的拥塞控制

TCP的拥塞控制

在计算机网络中的带宽,交换节点中的缓存和处理机等,都是网络中的资源。在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种情况就叫做拥塞。

拥塞控制与流量控制的关系密切,但也存在差别,拥塞控制是防止过多的数据注入到网络中,这样可用使网络中的路由器或链路不致过载。拥塞控制所要做的有个一前提,就是网络能够承受现有的网络负荷。流量控制往往指点对点的通信量控制,是个端到端的问题。

几种拥塞控制算法:慢开始、拥塞避免、快重传和快恢复

慢开始算法的思路:当主机开始发送数据时,如果立即把大量数据字节注入到网络,就可能引起网络拥塞,因为现在并不清楚网络的负荷情况。经验表明,较好的方法是先探测一下,即由小到大逐渐增加拥塞窗口的数值。

拥塞避免算法的思路:让拥塞窗口cwnd缓慢的增大,即每经过一个往返时间RTT就把发送方的拥塞窗口cwnd加1,而不是加倍。这样拥塞窗口cwnd按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢的多。

快重传和快恢复是基于如下考虑:

不使用快重传的话:如果发送方设置的计时器时限已经达到但还没有收到确认,那么很可能是网络出现了拥塞,致使报文段在网络中的某处被丢弃。但在这种情况下,TCP马上把拥塞窗口cwnd减小到1,并执行慢开始算法,同时把慢开始门限值ssthresh减半 

使用快重传:快重传算法首先要求接收方每收到一个失序的报文段后就立即发出重复确认,而不等待自己发送数据时才捎带确认。

快重传配合使用快恢复算法有以下两个要点:

1>  当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把慢开始门限sshresh减半。这是为了预防网络发生拥塞,注意,接下去不执行慢开始算法

2> 由于发送方认为现在网络很可能没有发生拥塞,因此与慢开始不同之处是不执行慢开始算法,而是把cwnd值设置成慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法,使拥塞窗口缓慢的线性增大

副一道题目

 

技术分享

技术分享

 

TCP的拥塞控制