tcp/ip協議,或稱為tcp/ip協議棧,或網際網路協議系列,在核心中tcp協議棧有七個型別的定時器。
1
連線建立(connection establishment)」定時器在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。 2
「重傳(retransmission)」定時器在tcp傳送某個資料段時設定。如果該定時器超時而對端的確認還未到達,tcp將重傳該資料段。重傳定時器的值 (即tcp等待對端確認的時間)是動態計算的,與rtt的估計值密切相關,且還取決於該報文段已被重傳的次數。 3
「延遲ack(delayed ack)」定時器在tcp收到必須被確認但無需馬上發出確認的資料時設定。如果在200ms內,有資料要在該連線上傳送,延遲的ack響應就可隨著資料一起傳送回對端,稱為捎帶確認。如果200ms後,該確認未能被捎帶出去,則定時器超時,此時需要傳送乙個立即確認。 4
「持續 (persist)」定時器在連線對端通告接收視窗為0,阻止tcp繼續傳送資料時設定。由於連線對端傳送的視窗通告不可靠(只有資料才會被確認,ack不會被確認),允許tcp繼續傳送資料的後續視窗更新有可能丟失。因此,如果tcp有資料要傳送,但對端通告接收視窗為0,則持續定時器啟動,超時後向對端傳送 1位元組的資料,判定對端接收視窗是否已開啟。 5
「保活(keep alive)」定時器在tcp控制塊的so_options 字段設定了sof_keepalive選項時生效。如果連線的連續空閒時間超過2小時,則保活定時器超時,此時應向對端傳送連線探測報文段,強迫對端響應。如果收到了期待的響應, tcp可確定對端主機工作正常,在該連線再次空閒超過 2小時之前,tcp不會再進行保活測試。如果收到的是rst復位響應, tcp可確定對端主機已重啟。如果連續若干次保活測試都未收到響應, tcp就假定對端主機已崩潰,但它無法區分是主機故障還是連線故障。 6
fin_wait_2定時器,當某個連線從fin_wait_1狀態變遷到fin_wait_2狀態並且不能再接收任何新資料時,fin_wait_2定時器啟動,設為10分鐘。定時器超時後,重新設為75秒,第二次超時後連線被關閉。加入這個定時器的目的是為了避免如果對端一直不傳送 fin,某個連線會永遠滯留在fin _ wait_ 2狀態(假設tcp不選用半開啟功能)。 7
time_wait定時器,一般也稱為2msl定時器。2msl指兩倍的msl,即最大報文段生存時間。當連線轉移到time_wait狀態,即連線主動關閉時,定時器啟動。狀態轉換圖那一節中已經詳細說明了需要2msl等待狀態的原因。連線進入time_wait狀態時,定時器設定為1分鐘,超時後,tcp控制塊被刪除,埠號可重新使用。
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 保活計...