TCP中的定時器

2021-07-02 11:50:22 字數 1012 閱讀 3496

在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。

在tcp傳送某個資料段時設定。如果該定時器超時而對端的確認還未到達,tcp將重傳該資料段。重傳定時器的值(即tcp等待對端確認的時間)是動態計算的,與rtt的估計值密切相關,且還取決於該報文段已被重傳的次數。

在tcp收到必須被確認但無需馬上發出確認的資料時設定。如果在200ms內,有資料要在該連線上傳送,延遲的ack響應就可隨著資料一起傳送回對端,稱為捎帶確認。如果200ms後,該確認未能被捎帶出去,則定時器超時,此時需要傳送乙個立即確認。

在連線對端通告接收視窗為0,阻止tcp繼續傳送資料時設定。由於連線對端傳送的視窗通告不可靠(只有資料才會被確認,ack不會被確認),允許tcp繼續傳送資料的後續視窗更新有可能丟失。因此,如果tcp有資料要傳送,但對端通告接收視窗為0,則持續定時器啟動,超時後向對端傳送1位元組的資料,判定對端接收視窗是否已開啟。

在tcp控制塊的so_options欄位設定了sof_keepalive選項時生效。如果連線的連續空閒時間超過2小時,則保活定時器超時,此時應向對端傳送連線探測報文段,強迫對端響應。如果收到了期待的響應,tcp可確定對端主機工作正常,在該連線再次空閒超過2小時之前,tcp不會再進行保活測試。如果收到的是rst復位響應,tcp可確定對端主機已重啟。如果連續若干次保活測試都未收到響應,tcp就假定對端主機已崩潰,但它無法區分是主機故障還是連線故障。

當某個連線從fin_wait_1狀態變遷到fin_wait_2狀態並且不能再接收任何新資料時,fin_wait_2定時器啟動,設為10分鐘。定時器超時後,重新設為75秒,第二次超時後連線被關閉。加入這個定時器的目的是為了避免如果對端一直不傳送fin,某個連線會永遠滯留在fin_ wait_ 2狀態(假設tcp不選用半開啟功能)。

一般也稱為2msl定時器。2msl指兩倍的msl,即最大報文段生存時間。當連線轉移到time_wait狀態,即連線主動關閉時,定時器啟動。狀態轉換圖那一節中已經詳細說明了需要2msl等待狀態的原因。連線進入time_wait狀態時,定時器設定為1分鐘,超時後,tcp控制塊被刪除,埠號可重新使用。

TCP中的定時器

在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。在tcp傳送某個資料段時設定。如果該定時器超時而對端的確認還未到達,tcp將重傳該資料段。重傳定時器的值 即tcp等待對端確認的時間 是動態計算的,與rtt的估計值密切相關,且還取決於該報文段已被重傳的次數。在tcp...

TCP中的定時器

1.重傳定時器 a給b傳送資料,a沒有收到b的確認包 ack 通常使用在弱網環境中 隧道 偏遠地區 2.堅持定時器 a呼叫close,傳送fin,而fin在傳輸的過程中丟失了,此時,a在等b返回ack,b在等待a傳送資料,雙方陷入乙個相互等待的狀態。3.保活定時器 保證tcp連線鮮活 keepali...

TCP的定時器

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