名词解释
RTT:一个连接的往返时间,即数据发送时刻到接收到确认的时刻的差值
RTO:重传超时时间,即从数据发送时刻算起,超过这个时间便进行重传
由于网络波动的不确定性,每个RTT都是动态变化的,所以RTO也应随着RTT动态变化
RTT估计器
TCP连接在重传定时器溢出就会重传数据,那么RTO怎么算?如果设置太短,会造成重传过于频繁,加快网络拥塞,如果设置太长,则会导致性能下降,失序的报文段无法得到确认,无法执行后续的业务逻辑。RTT估计器通过采样用于估计一个连接的往返时间,是动态变化的,同时估计RTT的方差,来确定超时重传间隔RTO。
快重传和快恢复
当发送端连续收到三个重复的ACK时,表明该数据段已经丢失,需要重发。当收到三个表示同一数据段的ack时,不需要等待计时器超时,立刻重新发送数据段(当时这三个ack要在超时之前到达发送端),因为能够收到接收端的ack确认信息,所以数据段只是单纯的丢失,不是网络拥塞所致,所以此时不需要拥塞窗口更新为最小值进行慢启动(如果这样的话,反倒因为拥塞窗口的增长需要时间,可能导致性能降低),此时需要设置拥塞窗口大小为:门限值大小+3,当然此处的门限值已经更新为拥塞窗口值的一半大小,更新之后按照拥塞避免算法继续进行。