TCP定時器調研

TCP常用的四種定時器:

  • 重傳定時器

  • 堅持定時器

  • 保活定時器

  • 時間等待定時器

具體介紹:
(1)重傳定時器

①應用場景: TCP報文段超時

② 特點:對於tcp協議,在規定的時間內,發現沒有收到ACK,就會重新發送消息,如果還沒有收到ACK,繼續重新發送消息,每次重新發送消息的時間間隔不同,默認第一次重傳是發現超時後1s,第二次重傳是第一次重傳後3s,第三次是6s;

③重傳時間=2*RTT
計算RTT常用的公式是:RTT=previous RTT*i + (1-i)*current RT
(i的值通常取90%,即新的RTT是以前的RTT值的90%加上當前RTT值的10%)

(2)堅持定時器

①應用場景:一方滑動窗口爲0之後,另外一方停止傳輸數據,進入堅持定時器的輪詢,直到滑動窗口不再爲0了。爲了解決零窗口大小通知可能導致的死鎖問題。

②特點:
TCP爲每一個連接設有一個堅持定時器(也叫持續計數器)。只要TCP連接的一方收到對方的零窗口通知,就啓動堅持定時器。若堅持定時器設置的時間到期,就發送一個零窗口控測報文段(該報文段只有一個字節的數據,它有一個序號,但該序號永遠不需要確認,因此該序號可以持續重傳),之後會出現以下三種情況:

一、對方在收到探測報文段後,在對該報文段的確認中給出現在的窗口值,如果窗口值仍未零,則收到這個報文段的一方將堅持定時器的值加倍並重啓。堅持計數器最大隻能增加到約60秒,在此之後,每次收到零窗口通知,堅持計數器的值就定位60秒。

二、對方在收到探測報文段後,在對該報文段的確認中給出現在的窗口值,如果窗口不爲零,那麼死鎖的僵局就被打破了。

三、該探測報文發出後,會同時啓動重傳定時器,如果重傳定時器的時間到期,還沒有收到接收到發來的響應,則超時重傳探測報文。

(3)保活定時器

①應用場景:當兩個TCP連接間出現長時間沒有數據傳輸時;

②特點:
每當服務器收到客戶的信息,就將保活定時器復位,超時通常設置2小時,若服務器超過2小時還沒有收到來自客戶的信息,就發送探測報文段,若發送了10個探測報文段,每75s發送一個,還沒收到響應時,則終止連接。

(4)時間等待定時器(Time_Wait)

①應用場景:TCP四次揮手後;

②特點:主動發起TCP斷開的一方需要保持2MSL的時間等待定時器,主要是考慮到四次揮手的最後一個ACK包對方沒有收到,那麼對方會重發FIN包,這麼一來一回就是2倍的MSL時長。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章