總結TCP協議中的定時器

2021-08-03 13:54:41 字數 1468 閱讀 2359

上回說到tcp協議保持資料傳輸可靠性的一種手段就是定時器(詳情戳小白的福音—秒懂udp協議&tcp協議。

那麼本文就總結一下tcp協議中用到的定時器及其作用。

tcp協議共有四種定時器(timer,也稱為「計時器」)

1.超時重傳計時器:retransmission timer
為了控制丟失的報文段或丟棄的報文段,也就是對報文段確認的等待時間。當tcp傳送報文段時,就建立這個特定報文段的重傳計時器,可能發生兩種情況:

若在計時器超時之前收到對報文段的確認,則撤銷計時器

若在收到對特定報文段的確認之前計時器超時,則重傳該報文,並把計時器復位

重傳時間=2*rtt
rtt的值應該動態計算。常用的公式是:

rtt=previous rtt*i + (1-i)*current rtt。i的值通常取90%,即新的rtt是以前的rtt值的90%加上當前rtt值的10%.
2.堅持計時器:persistent timer
專門為對付零視窗通知而設立的。

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

attention:

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

3.保活計時器:keeplive timer
每當伺服器收到客戶的資訊,就將keeplive timer復位,超時通常設定2小時,若伺服器超過2小時還沒有收到來自客戶的資訊,就傳送探測報文段,若傳送了10個探測報文段(沒75秒傳送乙個)還沒收到響應,則終止連線。
4.時間等待計時器:time_wait timer。

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

TCP協議中的定時器

tcp協議中的定時器 1 連線建立 connection establishment 定時器 在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。2 重傳 retransmission 定時器 在tcp傳送某個資料段時設定。在滑動視窗協議中,接受視窗會在連續收到的包序...

TCP協議中的定時器

1 連線建立 connection establishment 定時器 在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。2 重傳 retransmission 定時器 在tcp傳送某個資料段時設定。在滑動視窗協議中,接受視窗會在連續收到的包序列中的最後乙個包向接收...

TCP協議中的定時器

tcp協議中的定時器 什麼是計時器呢?我們可以理解成一塊鬧鐘,隔一段時間響一次,提醒tcp做特定的事情。tcp要正常工作,必須要有特定的計時器。tcp使用四種定時器 timer,也稱為 計時器 重傳計時器 retransmission timer 堅持計時器 persistent timer 保活計...