题目描述
运输层的超时计时器的超时重传时间应设置为多大呢?
如果把超时重传时间设置得太短,就会引起很多报文段的不必要的重传,使网络负荷增大。但若把超时重传时间设置得过长,则又使网络的空闲时间增大,降低了传输效率。
TCP 采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间 RTT。
TCP 保留了 RTT 的一个加权平均往返时间 RTTS(这又称为平滑的往返时间)。
第一次测量到 RTT 样本时,RTTS 值就取为所测量到的 RTT 样本值。以后每测量到一个新的 RTT 样本,就按下式重新计算一次 RTTS:
新的RTTS=(1- a)*(旧的RTTS)+a*(新的RTT样本)
式中,0<=a<1。若a很接近于零,表示 RTT 值更新较慢。若选择a接近于 1,则表示 RTT 值更新较快。
RFC 2988 推荐的a值为 1/8,即 0.125。
RTO 应略大于上面得出的加权平均往返时间 RTTS。
RFC 2988 建议使用下式计算 RTO:RTO=RTTS+4*RTTD,RTTD 是 RTT 的偏差的加权平均值。
RFC 2988 建议这样计算 RTTD:
第一次测量时,RTTD 值取为测量到的 RTT 样本值的一半。
在以后的测量中,则使用下式计算加权平均的 RTTD:
新的RTTD=(1-b)*(旧的RTTD)