一、慢启动
- 当一个新的TCP连接建立或者检测到由重传超时(RTO)导致丢包时,都会执行慢启动
-
整体过程大致为:当TCP初次发送数据时,并不是直接发送大量的数据,而是先发送一小部分数据,然后将数据量慢慢增加,直到达到一个阈值(ssthresh)之后,数据量不再增加,而是进入拥塞避免状态
过程详解
-
cwnd(拥塞窗口):
- 在TCP报文的IP头部有一个窗口大小字段(如下图的IP头部头部所示),这个字段表示了当前端可以接受数据的缓冲区大小
- cwnd的值等于“接收端的窗口大小与发送端的窗口大小”两者之间较小的那一个

- 当TCP第一次建立连接的时候,cwnd=1,表示可以发送一个SMMS((发送方的最大段大小))的大小
- 每当发送端接收到一个接收端的ACK,cwnd后面呈指数增长(2、4、8...)
- 当cwnd达到一个阈值(ssthresh),cwnd就不再呈指数增长了,而是进入下面的拥塞避免
二、拥塞避免
- 当达到慢启动达到阈值之后,cwnd就不再呈指数增长了,而是进入拥塞避免
-
在拥塞避免的算法下:
- TCP双方通信时,每经过一个往返时间RTT就将发送方的cwnd+1,使cwnd呈线性增长
- 当cwnd一直增长,如果此时出现了丢包,那么就将ssthresh减半,将cwnd重新置1,下面又开始进入慢启动状态
三、快速重传、快速恢复
- 快速重传属于“TCP超时与重传”的范畴,请参阅:https://blog.csdn.net/qq_41453285/article/details/107819204。但是在拥塞控制中也会用到
- 上面我们介绍的“慢启动”、“拥塞避免”是在TCP刚建立的时候
-
快速重传大致工作原理是:
- 如果是在TCP通信的过程中出现了丢包,当发送端连续接收到3个重复ACK之后,说明有数据包丢失
- 但是不启动“慢启动”算法,而是进入下面的快速恢复
-
快速恢复大致工作原理是:
- 发送方将慢启动ssthresh和cwnd值调整为当前窗口的一半,然后下面开始执行拥塞避免算法
- 当然,有的恢复算法会将cwnd增大一些,调整为新的ssthresh+3
相关文章:
猜你喜欢
-
2021-11-28
-
2021-10-31
-
2022-12-23
-
2022-01-03
-
2021-07-21
-
2021-10-03
相关资源
-
下载
2023-01-01
-
下载
2022-12-13
-
下载
2022-11-30