TCP 流量控制拥塞控制

Posted 每天学习一点点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP 流量控制拥塞控制相关的知识,希望对你有一定的参考价值。

流量控制:

  流量控制是为了控制发送方发送速率,保证接收方来得接收。

  接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。将窗口字段设置为 0,则发送方不能发送数据。

拥塞控制:

  如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方来得及接受,而拥塞控制是为了降低整个网络的拥塞程度。

 

TCP主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。发送方需要维护一个叫做拥塞窗口的状态变量。注意拥塞窗口与发送方窗口的区别,拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。

 

1、慢开始与拥塞避免

  发送的最初执行慢开始,令拥塞窗口=1,发送方只能发送1个字节;当收到确认报文后,将拥塞加倍,因此之后发送的字节数为:2 4 8.....;设置一个慢开始门限ssthresh,当拥塞窗口>=ssthresh时,进入拥塞避免,每个轮次只将拥塞窗口加1;如果出现超时,则令ssthresh=拥塞窗口/2,然后重新执行慢开始。

2、快重传与快恢复

  在接收方,每次要求接收方收到报文段都应该发送对已经收到有序字节的确认,例如已经接收到a1、a2,此时收到a4,应当发送对a2的确认;在发送方,如果收到3个重复确认,那么就可以确认下一个字节丢失,例如收到了3个a2,则a3丢失,此时快重传,立即重传下一个字节;在这种情况下,只是丢失个别字节,而不是网络拥塞,因此执行快恢复,令ssthresh=拥塞窗口/2,拥塞窗口=ssthresh,直接进入拥塞避免。

以上是关于TCP 流量控制拥塞控制的主要内容,如果未能解决你的问题,请参考以下文章

tcp流量控制与拥塞控制

tcp流量控制与拥塞控制

TCP中的流量控制和拥塞控制

TCP中的流量控制和拥塞控制

TCP中的流量控制和拥塞控制

TCP中的流量控制和拥塞控制