1. 程式人生 > >【計算機網路】超時計時器設定

【計算機網路】超時計時器設定

運輸層的超時計時器的超時重傳時間應設定為多大呢?

如果把超時重傳時間設定得太短,就會引起很多報文段的不必要的重傳,使網路負荷增大。但若把超時重傳時間設定得過長,則又使網路的空閒時間增大,降低了傳輸效率。

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) +b*|RTTS-新的RTT樣本|

b 是個小於 1 的係數,其推薦值是 1/4,即 0.25。