首先需要了解一个概念,为了在发送端调节所要发送的数据量,定义了一个“拥塞窗口”(Congestion Window),在发送数据时,将拥塞窗口的大小与接收端的窗口(receive win)大小做比较,取较小者作为发送数据量的上限.
什么是拥塞 What is congestion?
重传计时器超时 (RTO)
接收到三个重复确认
RTT: 发送一个数据包到收到对应的ACK,所花费的时间, 并以此用来计算RTO
RTO: 发送数据包,启动重传定时器,重传定时器到期所花费的时间,称为RTO
4 Methods:
Slow Start(SS)
Congestion Avoid
Fast Resend
Fast Recovery
cwnd 拥塞窗口
ssthresh 慢启动阀值
1. 慢启动SS,每次指数性增加cwnd
2. 当触及ssthresh时,改变为拥塞控制congestion avoid,每次线性增长cwnd
3. 当网络拥塞情况发生时(特指数据包RTO超时),即退回cwnd==1 并将ssthresh/2, 重新开始SS
4. 当收到3个丢包信息(Duplicate ACK),触法快重传Fast Resend, 重传指定丢包,并开始快速恢复Fast Recovery, 即退回cwnd=sshresh/2=new sshresh, 然后开始执行拥塞控制congestion avoid(线性增长)