0


TCP协议的拥塞控制

前言

    在TCP协议中,为了防止当传输数据量过多从而造成网络拥堵的情况,因从,采用拥塞控制、流量控制等方法来避免出现这种情况。

流量控制:流量控制是TCP协议特有的功能,TCP协议规定接收方与发送方都有一块固定的缓冲空间,而发送的数据量大小由接收方所控制,当接收方来不及处理发送方的数据时,就会通知发送方降低发送效率,以此来达到流量控制的目的。

拥塞控制:拥塞控制也是TCP协议特有的功能,拥塞控制重要是通过慢开始、拥塞避免、快重传、快恢复这四个算法来避免产生拥塞。

解决方向:流量控制是为了让接收方能及时接受数据,而拥塞避免是为了降低整个网络的拥塞程度

控制的四个算法

    我们知道TCP主要通过慢开始、拥塞避免、快重传、快恢复这四个算法来避免产生拥塞的。那么他究竟是如何控制的呢?由下两幅图可以清楚的看出:

d9bf6705918646f3819be83b9c70936b.png

729f0cc2199d40cb870139e16f7f7593.png

    发送方维护了一个叫做**拥塞窗口(cwnd)**的状态变量,当TCP建立连接后,首先会执行慢开始

慢开始

    慢开始是令cwnd=1,意思是第一次发送一个报文段,当收到接收方的确认后,cwnd加倍,每次成倍发送报文段。但这种增长是呈指数增长的,后期增长的速录极快。为了防止增长过快,引入了**慢门限(ssthresh)**的概念。当cwnd增长超过了慢门限(ssthresh)就会开始执行拥塞避免算法。

拥塞避免

    拥塞避免是当收到接受方的确认后,cwnd每次加1,一旦出现网络拥塞超时的情况,**慢门限就会减半**,然后会执行快恢复。

快重传

    快重传是在接受方要求每次收到确认报文都是对应最后一次已收到的有序报文,当接受方连续收到三个相同的确认报文,就会认为该段报文已经丢失,即刻重新发送该报文段。

快恢复

    慢门限减半之后,重新令cwnd等于慢门限值,然后再次进入“拥塞避免”状态。

扩充:

为什么要用快恢复?

    从图中可以看到,当发生网络拥塞超时后,从原本的慢开始优化为快恢复,这样做目的是防止一出现网络拥塞超时就立刻将传输速率降到最低,而是仍然保证一定的传输速率
标签: tcp/ip 网络 java

本文转载自: https://blog.csdn.net/w259149/article/details/127206515
版权归原作者 雾远望 所有, 如有侵权,请联系我们删除。

“TCP协议的拥塞控制”的评论:

还没有评论