|
知识路径: > 计算机网络原理 > Internet 协议 > 传输层协议 TCP 与 UDP > TCP 协议 > TCP可靠传输 >
|
相关知识点:3个
|
|
|
|
|
原始算法的大致思想是,动态维持往返时延(Round Trip Time,RTT)的平均值,然后把TCP重传定时器的值设为RTT的函数。每当TCP发送一个报文段时,它就记录下发送时刻。当该报文段的ACK回来时,TCP记录下ACK返回时刻,同时把ACK返回时刻和TCP报文发送时刻之间的时间差记为SampleRTT。接着,TCP在前一次的RTT估算值EstimatedRTT和当前的新采样值SampleRTT之间通过加权求和计算出新的RTT估算值EstimatedRTT。具体公式如下:
|
|
|
EstimatedRTT=α×EstimatedRTT+(1-α)×SampleRTT
|
|
|
其中,0≤α≤1,α因子决定了EstimatedRTT对延迟变化的反应速度。当α接近1时,当前的采样值SampleRTT对RTT估算值EstimatedRTT几乎不起作用;而当α接近0时,RTT估算值EstimatedRTT紧随延迟的变化而变化,直接采用当前的采样值SampleRTT作为新的RTT估算值EstimatedRTT。作为折中,TCP协议规范推荐α取值为0.8~0.9。
|
|
|
|
|
当β接近1时,TCP能迅速检测到报文丢失并及时重传,从而减少等待时间,但可能引起许多不必要的重传。当β太大时,重传报文的数目减少,但等待确认的时间增加。作为折中,TCP协议规范推荐β取2。
|
|
|
例如,当α取0.9,β取2时,而且当前的EstimatedRTT等于250μs,而现在发送一个报文段并且收到确认的SampleRTT是70μs,则有如下结果:
|
|
|
EstimatedRTT=0.9×250+0.1×70=232μs
|
|
|
|