TCP中用到的定時器

2021-07-09 18:28:10 字數 1349 閱讀 1732

tcp為每條連線建立七個定時器:

1、連線建立定時器

在傳送syn報文段建立一條新連線時啟動。如果沒有在75秒內收到響 應,連線建立將中止。當tcp例項將其狀態從listen更改為syn_recv的時侯就會使用這一計時器.服務端的tcp例項最初會等待乙個ack三秒鐘.如果在這一段時間沒有ack到達,則認為該連線請求是過期的。

2、重傳定時器

在tcp傳送資料時設定.如果定時器已超時而對端的確認還未到達,tcp將重傳資料.重傳定時器的值(即tcp等待對端確認的時間)是動態計算的,取決於tcp為該 連線測量的往返時間和該報文段已重傳幾次。

3、延遲定時器

在tcp收到必須被確認但無需馬上發出確認的資料時設定.tcp等 待時間200ms後傳送確認響應.如果,在這200ms內,有資料要在該連線上傳送,延遲的ack響應就可隨著資料一起傳送回對端,稱為稍帶確認。

4、持續定時器

在連線對端通告接收視窗為0,阻止tcp繼續傳送資料時設定.由於連線對端傳送的視窗通告不可靠,允許tcp繼續傳送資料的後續視窗更新有可能丟失.因此,如果tcp有資料要傳送,但對端通告接收視窗為0,則持續定時器啟動,超時後向對端傳送1位元組的資料,判定對端接收視窗是否已開啟.與重傳定時器類似,持續定時器的值也是動態計算的,取決於連線的往返時間,在5秒到60秒之間取值。

5、保活定時器

在應用程序選取了插口的so_keepalive選項時生效.如果連線的連續空閒時間超過2小時,保活定時器超時,向對端傳送連線探測報文段,強迫對端響應.如果收到了期待的響應,tcp確定對端主機工作正常,在該連線再次空閒超過2小時之前,tcp不會再進行保活測試,.如果收到的是其它響應,tcp確定對端主要已重啟.如果連紐若干次保活測試都未收到響應,tcp就假定對端主機已崩潰,儘管它無法區分是主機幫障還是連線故障。

6、fin_wait-2定時器

,當某個連線從fin_wait-1狀態變遷到fin_wain_2狀態,並且不能再接收任何資料時,fin_wait_2定時器啟動,設為10分鐘,定時器超時後,重新設為75秒,第二次超時後連線被關閉,加入這個定時器的目的為了避免如果對端一直不傳送fin,某個連線會永遠滯留在fin_wait_2狀態。

7、time_wait定時器

,一般也稱為2msl定時器.2ms指兩倍msl.當連線轉移到time_wait狀態,即連線主動關閉時,定時器啟動.連線進入time_wait狀態時,定時器設定為1分鐘,超時後,tcp控制塊和internet pcb被刪除,埠號可重新使用。

tcp包含兩個定時器函式:乙個函式每200ms呼叫一次(快速定時器);另乙個函式每500ms呼叫一次.延遲定時器與其它6個定時器有所不同;如果某個連線上設定了延遲ack定時器,那麼下一次200ms定時器超時後,延遲的ack必須被傳送.其它的定時器每500ms遞減一次,計數器減為0時,就觸發相應的動作。

TCP的定時器

在tcp協議中有的時候需要定期或者按照某個演算法對某個事件進行觸發,那麼這個時候,tcp協議是使用定時器進行實現的。在tcp中,會有四種定時器 這四個定時器都有各自的具體作用。tcp是可靠的,因此,它對於發出去的資訊,沒有得到正常ack反饋的,都會啟動乙個重傳機制。這個重傳機制使用乙個重傳定時器,當...

TCP的定時器

建立連線定時器 connection establishment timer 重傳定時器 retransmission timer 延遲應答定時器 delayed ack timer 堅持定時器 persist timer 保活定時器 keepalive timer fin wait 2定時器 fi...

TCP的定時器

在tcp協議中有的時候需要定期或者按照某個演算法對某個事件進行觸發,那麼這個時候,tcp協議是使用定時器進行實現的。在tcp中,會有四種定時器 這四個定時器都有各自的具體作用。tcp是可靠的,因此,它對於發出去的資訊,沒有得到正常ack反饋的,都會啟動乙個重傳機制。這個重傳機制使用乙個重傳定時器,當...