TCP的四種定時器

2021-08-03 15:56:45 字數 2070 閱讀 2970

tcp使用四種定時器(timer,也稱為「計時器」):

重傳計時器:retransmission timer

堅持計時器:persistent timer

保活計時器:keeplive timer

時間等待計時器:time_wait timer。

(1)重傳計時器:

重傳定時器:為了控制丟失的報文段或丟棄的報文段,也就是對報文段確認的等待時間。當tcp傳送報文段時,就建立這個特定報文段的重傳計時器,可能發生兩種情況:若在計時器超時之前收到對報文段的確認,則撤銷計時器;若在收到對特定報文段的確認之前計時器超時,則重傳該報文,並把計時器復位;

重傳時間=2*rtt;

rtt的值應該動態計算。常用的公式是:rtt=previous rtt*i + (1-i)*current rtt。i的值通常取90%,即新的rtt是以前的rtt值的90%加上當前rtt值的10%.

(2)堅持計時器:persistent timer

專門為對付零視窗通知而設立的。

堅持定時器主要是解決零視窗大小通知可能導致的死鎖問題。剛開始接收端向傳送端傳送了乙個零視窗報文段。在不久之後,如果接收端的快取區有一定的空間可以接收資料,此時接收端就會向傳送端傳送了乙個非零視窗大小的報文段(即視窗更新),但是這個非零視窗大小的報文段在傳輸過程中丟失,導致傳送端無法接收到該非零視窗大小的報文段。因此,傳送端就會一直處於等待非零視窗大小的報文端通知,由於接收端已經傳送了非零視窗大小的報文段,而且並不知道該報文段在傳輸過程中丟失,則接收端會一直處於等待接收資料狀態,如果沒有任何措施的話,這個死鎖的局面會一直延續下去。

為了解決上面這個問題,tcp 為每乙個連線設有乙個堅持定時器(也叫持續計數器)。當傳送端收到零視窗的確認時,就啟動堅持計時器,當堅持計時器截止期到時,傳送端就傳送乙個特殊的報文段,叫探測報文段,這個報文段只有乙個位元組的資料。探測報文段有序號,但序號永遠不需要確認,甚至在計算對其他部分資料的確認時這個序號也被忽略。探測報文段提醒接收端,確認已丟失,必須重傳。

堅持計時器的截止期設定為重傳時間的值,但若沒有收到來自接收端的響應,則傳送另乙個探測報文段,並將堅持計時器的值加倍和並復位,傳送端繼續傳送探測報文段,將堅持計時器的值加倍和復位,直到這個值增大到閾值為止(通常為 60 秒)。在此之後,傳送端每隔 60s 就傳送乙個報文段,直到視窗重新開啟為止。

堅持定時器的原理:當 tcp 伺服器收到了客戶端的 0 滑動視窗報文時,啟動乙個定時器來計時,並在定時器溢位的時向客戶端查詢視窗是否已經增大,如果得到非零的視窗就重新開始傳送資料,如果得到零視窗就再開乙個新的定時器準備下一次查詢。

(3)保活計時器:keeplive timer

保活定時器是為了應對 tcp 連線雙方出現長時間的沒有資料傳輸的情況。如果客戶端與伺服器建立了 tcp 連線之後,客戶端由於某種原因導致主機故障,則伺服器就不能收到來自客戶端的資料,而伺服器不可能一直處於等待狀態,保活定時器就是用來解決這個問題的。伺服器每收到一次客戶端的資料,就重新設定保活定時器,通常為 2 小時,如果 2 小時沒有收到客戶端的資料,服務端就傳送乙個探測報文,以後每隔75秒傳送一次,如果連續傳送10次探測報文段後仍沒有收到客戶端的響應,伺服器就認為客戶端出現了故障,就可以終止這個連線。

(4)時間等待計時器:time_wait timer

在連線終止期使用,當tcp關閉連線時,並不認為這個連線就真正關閉了,在時間等待期間,連線還處於一種中間過度狀態。這樣就可以時重複的fin報文段在到達終點後被丟棄,這個計時器的值通常設定為一格報文段壽命期望值的兩倍。

也有一種說法稱為2msl定時器

2msl定時器:msl是報文段做大生存時間(maximum segment lifetime),設定這個定時器有兩個目的其一是為了測量連線處於time_wait狀態的時間.這樣可以讓tcp再次傳送最後的ack以防止這個ack丟失(如果丟失,另一端會重傳fin)。其二,為允許老的重複分節在網路中消逝。具體可以解釋為,如果乙個tcp連線在斷開之前有迷途分節尚未消逝,在斷開該tcp連線之後立刻重啟乙個同樣的連線(雙方的ip位址和埠port相同),這時之前的迷途的老分節可能對新的新的tcp連線接收,從而造成未定義的錯誤。為了避免這種情況,tcp規定在time_wait狀態,不能啟動乙個連線的化身。既然time_wait狀態維持2msl,這就保證了乙個連線上的分組及其應該在2msl內都會消失。

tcp四種定時器

定時器在tcp可靠傳輸的過程中起著舉足輕重的作用。tcp在建立連線之後可能 保活keep alive定時器是可選的 會 啟動四個定時器。tcp使用四種定時器 timer,也稱為 計時器 重傳計時器 retransmission timer 堅持計時器 persistent timer 保活計時器 k...

tcp四種定時器

tcp使用四種定時器 timer,也稱為 計時器 重傳計時器 retransmission timer 堅持計時器 persistent timer 保活計時器 keeplive timer 時間等待計時器 time wait timer。1 重傳計時器 重傳定時器 為了控制丟失的報文段或丟棄的報文...

TCP的四種定時器

tcp在建立連線後會啟動四個定時器 重傳計時器 retransmission timer 堅持計時器 persistent timer 保活計時器 keeplive timer 2msl定時器 time wait timer 1 重傳計時器 tcp的傳送方沒有在規定的時間內收到確認就要重傳已傳送的報...