TCP的流量控制与拥塞控制的区别
本篇内容主要讲解"TCP的流量控制与拥塞控制的区别",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"TCP的流量控制与拥塞控制的区别"吧!
1. TCP流量控制
流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。
原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。
考虑一种特殊的情况,接收方向发送方发送了零窗口的报文段后,接收方又有了一些存储空间。与接收方向发送方发送了非零窗口的报文段。然而这个报文段在传送过程中丢失了。发送方的发送窗口一直为零导致死锁。
为了解决这个问题,每个连接设置有持续计时器,只要连接的一方收到零窗口通知,就启动持续计数器。若持续计数器设置的时间到期,就发送一个零窗口探测报文段,而对方就在确认这个探测报文段给出现在的窗口值。如果窗口仍然为零,那么收到这个报文段的一方重置持续计数器,否则,那么死锁的僵局就可以打破。
2.TCP的拥塞控制
拥塞控制:防止过多的数据注入到网络中,这样可以使网络中的路由器或链路过载。如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收(端对端的通信),而拥塞控制是为了降低整个网络的拥塞程度(全局性)。
2.1TCP的拥塞控制方法
TCP进行拥塞控制的算法有四种,即慢开始,拥塞避免,快重传,快恢复。
发送方让自己的发送窗口等于拥塞窗口,拥塞窗口的大小取决于网络的拥塞程度,并且动态地在变化。
数据是单方向传送的,对方只传送确认报文。
接收方总是有足够大的缓存空间,因而发送窗口的大小由网络的拥塞程度决定。
慢开始和拥塞避免
发送的最初执行慢开始,令 cwnd = 1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段数量为:2、4、8 ...
当cwnd > ssthresh(慢开始门限)时,改用拥塞避免算法,拥塞避免算法每经过一个往返时间cwnd加1。
当cwnd = ssthresh时,既可以用慢开始也可以使用拥塞避免算法。
当cwnd < ssthresh时,慢开始算法。
当网络出现超时,ssthresh = cwnd / 2,同时设置拥塞窗口cwnd=1.进入慢开始算法。
2.快重传与快恢复
快重传算法要求接收方不要等待自己发送数据才进行捎带确认,而是立即发送确认。即使收到失序的报文段对已发送的报文段的重复确认。发送方一连收到3个重复确认就应当立即进行重传。在这种情况下,只是丢失个别报文段,而不是网络拥塞。因此执行快恢复,发送方调整门限值ssthresh =cwnd/2,同时设置拥塞窗口cwnd=ssthresh ,并开始拥塞避免算法。
慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。
到此,相信大家对"TCP的流量控制与拥塞控制的区别"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!