Bootstrap

TCP协议的拥塞控制详解

什么是TCP协议?

  1. TCP协议是传输层、面向连接的、可靠的协议。
  2. TCP连接是点到点、端到端的连接。
  3. TCP有着 拥塞控制 流量控制 可靠性传输 三个特点。

这里我们主要讲的是TCP如何进行拥塞控制的。

什么是拥塞控制?

有时候发送方和接收方性能很好,结果是中途的网络带宽较差导致网络堵塞了。这时候如果还是依然大量的发送消息,反而会造成更大面积的网络拥塞。所以我们需要用拥塞控制,来避免由于分组丢失而进行的重发导致网络更加拥堵的现象。

如何进行拥塞控制?

TCP通常通过四个算法来进行拥塞控制,分别是 慢开始 拥塞避免 快重传 快恢复 四个算法来进行控制。我们接下来分别展开详解。

慢开始

慢开始指的是 刚开始发送数据时 拥塞窗口CWND的值是1,发送方只能发送一个报文段,当收到确认消息后下一次会将cwnd的值加倍并且发送。 因此每次发送会成倍增加。

 拥塞避免

由于cwnd的增速很快,我们通常会设置一个门限值(ssthresh),为了防止速度过快导致出现拥塞,当cwnd>=ssthresh时,会进入拥塞避免,cwnd每次只增加一,直到出现超时, 此时会将门限值变为原来的一半,并且执行 快恢复。

快重传

快重传指的是,当连续收到三个相同的有序报文,则判断报文丢失,立刻重发丢失的报文(尚未收到本应当收到的报文段)

快恢复

快重传发生后,不会让cwnd从1 开始,而是将cwnd拥塞窗口减半,并且作为门限值。从这个值开始每次讲cwnd增加1,线性逐步增加。 这就是快恢复

;