TCP的四種定時器

2021-08-01 07:08:52 字數 1590 閱讀 6366

tcp在建立連線後會啟動四個定時器:

重傳計時器:retransmission timer

堅持計時器:persistent timer

保活計時器:keeplive timer

2msl定時器:time_wait timer

1、重傳計時器

tcp的傳送方沒有在規定的時間內收到確認就要重傳已傳送的報文段。這種重傳概念很容易理解,但重傳時間的選擇卻不簡單。

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

tcp採用了一種自適應演算法,它記錄每乙個報文段發出的時間,以及收到相應的確認的時間,這兩個時間差就是豹紋的往返時間rtt。

重傳時間 = 2*rtt;

rtt是動態計算的:

rtt=舊的 rtt*i + (1-i)*當前rtt。i的值通常取90%,即新的rtt是以前的rtt值的90%加上當前rtt值的10%

kam演算法:在計算加權平均rtts時,只要報文重傳了,就不在採用其往返時間樣本。

2、堅持計時器

堅持定時器是使用在一方滑動視窗為0之後,另外一方停止傳輸資料,進入堅持定時器的輪詢,直到滑動視窗不再為0了。

首先是滑動視窗,可以簡單理解為緩衝區剩餘空間大小。不管是寫緩衝還是讀緩衝,一旦一方通告了自己的滑動視窗大小,另外一方就會根據滑動視窗大小傳遞視窗大小的資料了。但是,當被通告,一方的滑動視窗大小為0的時候,另外一方就會啟動堅持定時器,基本也是使用tcp指數退避方法,第一次1.5秒,第二次1.5x2秒,第三次1.5x4…

其次是糊塗視窗綜合症。這個症狀是滑動視窗引起的。**是傳送方和接收方在乙個很小的滑動視窗的時候就開始資料傳輸,傳輸結束之後,讀寫的消費速度也並沒有那麼快,導致下次傳輸的時候,滑動視窗還是那麼小。然後現象就是每次傳輸的資料都非常小。就好比每次開出去的火車載貨量只有一節車廂,其實我們是希望能攢夠n節車廂才開始傳輸。

糊塗視窗綜合症有解決辦法,還不止一種,在接收方或者傳送方都可以解決。大致就是如果接收方解決,那麼接收方在接收視窗小於一定大小的時候,對所有的接收請求都返回視窗為0的包,來觸發另外一方的堅持定時器。同樣傳送方也是,在可以傳送的資料大於一定視窗的時候才傳送。

3、保活計時器

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

4、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的四種定時器

重傳計時器 retransmission timer 堅持計時器 persistent timer 保活計時器 keeplive timer 時間等待計時器 time wait timer 1 重傳計數器 重傳計時器 為了控制丟失的報文段或丟棄的報文段,也就是報文段確認的等待時間,當tcp傳送報文時...