文章《TCP 的那些事 | 快速重传》、《TCP 的那些事 | SACK》及《TCP的那些事 | D-SACK》讲解了TCP的快速重传机制、SACK机制以及D-SACK机制。TCP超时与重传中最重要的部分就是对一个给定连接的往返时间RTT(Round-Trip Time)的测量。由于路由器和网络流量均会变化,RTT这个时间可能经常会发生变化,如果测量出来RTT,那么发送端大致就知道需要多久进行重传,这个重传时间就是RTO(Retransmission TimeOut)。
如果Timeout时间设置的太长,重发就慢,丢了老半天才重发,没有效率,性能差;设置太短,会导致可能并没有丢就重发,于是重发的就快,会增加网络拥塞,导致更多的超时,更多的超时导致更多的重发。
最初的TCP规范使用低通过滤器来更新一个被平滑的RTT估计器(记为R),公式如下: