TCP/IP 之TCP協議(6):4種計時器

1、大多數TCP實現使用至少4種計時器:重傳,2MSL,持久,保活

2、2MSL計時器用於連接終止時,原因見:TCP協議的狀態和連接

3、保活計時器(keepalive timer)用於防止連接出現長時間的空閒;每當服務器收到客戶消息就把該計時器復位,如果超過時間還沒有收到消息,就發送探測報文段,定時的發N個,如果還沒有收到響應,就認爲是客戶除了故障,終止連接

4、持久計時器(persistence timer),用於對付0窗口而引起的死鎖。

當發端收到窗口爲0的消息,開啓該計時器,到了一定時間,發字節爲一的報文段去試探(試探報文段只有一個字節,且無需確認),如果沒有響應,則再發,同時將該計時器加倍和復位。到這個值到達上限爲止(一般是1分鐘),然後就每隔這個上限發一次報文到窗口重新打開。

5、重傳計時器:

(1)、重傳的兩種情況,當TCP發送一個報文段時,創建這個報文段的重傳計時器。重傳超時(RTO)

a、如果在這個時間之前,收到此報文的ACK,則撤銷此計時器
b、如果時間到,將計時器復位,並重傳報文

(2)、RTT(往返時間)的測量,用RTT(M)表示測量的RTT值,注意的是,如果測量已經開始,在此測量未結束之時,不能進行另一個測量;在計算新的RTO時候不用考慮重傳的RTT

(2)、平滑RTT(S)與偏差RTT(D),使用前後的測量值加權的結果,計算方法如下(多數實現中,a取1/8,b取1/4):

第一次測量後:RTT(S) = RTT(M), RTT(D) = RTT(M)/2;

以後每次測量後:RTT(S) = (1 - a) * RTT(S) + a * RTT(M)
               RTT(D)= (1 - b) * RTT(D) + b * abs( RTT(S) - RTT(M) );

(3)、重傳超時(RTO)的計算:

最初:RTO = 初始值
每次測量後:RTO = RTT(S) + 4 * RTT(D);

(4)、發生重傳時,就將RTO加倍,RTO *= 2; 這個叫做指數退避,知道一個上限爲止。



發佈了54 篇原創文章 · 獲贊 16 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章