本文参考自
其余图源见水印
发现一文深度剖析ssthresh的
定义
当网络极度拥堵时,如果没有拥塞控制,发送方会继续发送大量的网络数据包,而这些数据包因为网络阻塞而延时、丢失,触发了TCP重传,重传使得网络更加阻塞,整个网络将会陷入不可用的状态。
拥塞控制,就是在网络中发生拥塞时,减少向网络中发送数据的速度,防止造成恶性循环;同时在网络空闲时,提高发送数据的速度,最大限度地利用网络资源。
拥塞窗口
定义
拥塞窗口(cwnd)是发送方维护的一个状态变量,它会根据网路拥堵情况动态调节。
之前发送窗口约等于接收窗口,但在拥塞窗口加入后,发送窗口=min(拥塞窗口, 接收窗口)。
变化规则
没有拥堵就增大,出现拥堵就减小。通过 发送方是否触发了超时重传 来判断。
类别
慢启动&&拥塞避免
慢启动:每收到一个ACK,cwnd+=1;
拥塞避免:每收到一共ACK,cwnd+=1/cwnd。
在ssthresh
后,慢启动变更为拥塞避免。
ssthresh
:慢启动门限,是一个数值,一般来说大小为65535字节。
超时重传&&快速恢复
在拥塞避免过程中:
若发生超时,则代表网络拥塞,启用超时重传。
若收到报文三次确认,则发生拥塞,快速重传。
超时重传:从1开始,慢启动到cwnd/2。
快速重传:cwnd = ssthresh + 3,从这里继续慢慢+1。