唯快不破 tcp ip協議棧中實現的幾種定時器

2021-08-10 13:44:32 字數 1245 閱讀 8248



這裡總的來看看tcp中的各個定時器。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 IP詳解 TCP IP工作流程

intemet採用tcp ip協議。tcp ip是一種網際互聯通訊協議,它包括兩個核心協議tcp和ip。tcp稱為傳輸控制協議,ip稱為網際網路絡協議。在分層是有不同的標準將tcp ip模型分為不同的層次,在osi模型中分為七層,在tcp ip中為四層,但是常用的是將兩者進行融合,說分成五層 應用層...

天下武功,唯快不破

昨天v哥的一朋友租了幢樓準備搞小資情調的咖啡旅館,聽到這個訊息v哥著實吃了一驚 這不是上週一才冒出來的想法,怎麼這週三就搞定了,太tm快了。所以我也就想起來星爺 功夫 中的這句話 天下武功,無堅不破,唯快不破。太tm經典了。事情是這樣的,我這朋友 性別女 周一去西湖景區自駕遊逛了一圈,長日浸淫在城市...

天下武功無堅不破,唯快不破 yaf

天下武功無堅不破,唯快不破 yaf 最近對於yaf框架有些興趣,從最初按照鳥哥惠新宸的寫的關於yaf手冊,到自己寫乙個hello world 程式,對於我這個新手來說還 是蠻曲折的,大家都知道yaf框架是用c寫的,所以自身的效率和效能,還是很不錯的,但是缺點的就是關於yaf的文件太少,這讓不少初學者...