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 ,并开始拥塞避免算法。
【计算机网络|计算机网络 拥塞控制和流量控制,简述TCP的流量控制与拥塞控制】慢开始和快恢复的快慢指的是cwnd的设定值,而不是cwnd的增长速率。慢开始cwnd设定为1,而快恢复cwnd设定为ssthresh。
推荐阅读
- 计算机网络基础|TCP流量控制与拥塞控制总结
- 计算机网络|【计算机网络】第六章(应用层)
- 计算机网络|域名解析获得IP地址(全方位分析输入网址后计算机到底做了什么)
- 计算机网络|网络安全协议SSL的知识梳理
- TCP和UDP常见面试题(全面)
- 计算机网络|【计算机网络】TCP和UDP的特点及区别
- 计算机网络|【计算机网络】——TCP和UDP协议的区别
- 计算机网络|[计算机网络]套接字编程
- 计算机网络|TCP到底有多厉害()