TCP超时重传

  • 什么是超时重传

  • 往返时间RRT和超时重传时间RTO

  • 新的平均往返时间RTO的计算
    RTTnew=αRTTold+(1α)RTT
    此处 α 称为平滑因子,通常 α=0.9

  • 重传时间的计算
    重传时间采用退避机制,每次退避时间为前一次的二倍,直至64s
    初始值: RTO=2RTT
    更新值: RTO=βRTO
    β 通常为2。

  • karn算法
    如果在一个报文段中的数据被一次性地成功传输和确认,那么发送端可以准确得到该报文段传输的RTT样本。但若出现了重传,情况就会变得很复杂。例如,一个报文段发送后出现超时,TCP将在另一个报文段中重传。由于这两个报文段包含了同样的数据,发送方接收到确认信息时将无法分辨出确认信息到底是针对哪个报文段的,因为这两个报文段产生的确认信息可能是完全相同的,确认信息既可能是针对原始报文段的(这种情况可能是由于原报文段或确认在传输中被延迟造成的),也可能是对重传报文段的确认。这种现象称为确认二义性(Acknowledgement Ambiguiity)。确认的二义性将导致TCP无法准确地估算RTT。
    解决方案:重传所得到的RTT不作为新的RTT来计算平均RTT,只利用非重传样本,使得平均RTT比较稳定,不会出现较大波动。为了避免确认二义性带来的问题,TCP采用了Karn算法来维护RTT的估计值。Karn算法规定,TCP只能利用没有确认二义性(既无重发、一次发送成功并得到确认的报文段)的RTT样本来对RTT的估计值进行调整。

你可能感兴趣的:(TCP-IP协议)