常見的TCP定時器

2021-09-30 13:39:45 字數 1807 閱讀 9982

tcp 是提供可靠的傳輸層,它使用的方法之一就是確認從另一端收到的資料。但是資料和確認都可能會丟失,tcp 通過在傳送時設定乙個定時器來解決這個問題。如果當定時器溢位時還沒收到確認,它就會重傳該資料。

常見的四種tcp定時器(timer):

重傳計時器:retransmission timer

堅持計時器:persistent timer

保活計時器:keeplive timer

時間等待計時器:time_wait timer

時間等待計時器

:在tcp的四次揮手期間,客戶端在響應了伺服器的關閉連線響應報文後,當tcp關閉連線時,並不認為這個連線就真正關閉了,會進入time-wait狀態,在時間等待期間,連線還處於一種中間過渡狀態。這樣就可以使重複的fin報文段在到達終點後被丟棄,這個計時器的值通常設定為一格報文段壽命期望值的兩倍。

重傳定時器 :

tcp傳送的報文,可能會在傳輸途中被丟失,但傳送方不知道該報文已丟失,接收方並不知道傳送方已經發過該報文,一直在等待傳送方傳送該報文。此時就需要乙個重傳定時器。 

當傳送方沒有在規定時間內收到接收方發來的對報文的確認,就會重新傳送該報文,並重新設定定時器;如果傳送方在規定時間內收到了接收方的確認,就撤銷重傳定時器。 

重傳時間的設定,採用了自適應

演算法,它記錄了乙個報文段發出的時間,以及收到相應確認的時間。這兩個時間差就是rtt。 

新的rtts=(1-α)×(舊的rtts)+α×(新的rtt樣本) 

其中,rtts是rtt的加權平均值。0≤α<1,表示新的rtts值和舊的rtts值相比變化不大,若α接近1,則表示影響較大。 

顯然,超時重傳時間rto應略大於rtts. 

rto = rtts+4×rttd 

其中,rttd是rtt的偏差的加權平均值。當地一次測量時,rttd值取為rtt的一半。之後的測量用下面的計算公式: 

新的rttd = (1-β)×(舊的rttd)+β×|rtts - 新的rtt樣本| 

其中,β推薦為0.25。 

堅持計時器 :

堅持計時器主要解決零視窗通知導致死鎖的問題。 

剛開始接收端向傳送端傳送了乙個零視窗的報文。之後,接收端的視窗有一定空間可以接收資料,所以就向傳送端傳送了乙個有空餘視窗報文段,但是該報文段在傳輸過程中被丟失。傳送端就一直以為接收端沒有空餘視窗,而接收端知道自己已經傳送了有空餘視窗報文段給傳送方,但不知道該報文段已經丟失。所以雙方都在等待,可能會造成死鎖。 

解決方法:tcp為每乙個連線都設定了堅持計時器。當傳送端收到零視窗的確認時,就啟動計時器,當計時器截止到期時,傳送端就傳送乙個特殊的報文段叫,探測報文段。探測報文段只有乙個位元組的資料,它的序號不需要確認,甚至在確認其他報文段時也不需要計算在內。探測報文段提醒接收端,確認已丟失,必須重傳。 

此時堅持計時器的值會重新設定,如果在截止期內仍沒有收到來自接收端的響應,就會重新傳送乙個探測報文段,並將堅持計時器的值加倍並復位。傳送端繼續傳送探測報文段,並將堅持計時器的值加倍並復位。直到該值增大到閥值(通常為60s)為止。之後每隔60s傳送端就傳送乙個報文,直到接收方傳送有空餘視窗報文。

保活計時器 :

假設 客戶端已經主動與伺服器建立了tcp連線,但客戶端突然出故障了。那麼伺服器就不能再接收客戶端發來的資料了。但伺服器並不知道客戶端出了故障,伺服器仍舊在等待,且一定不會收到來自客戶端的資料,那麼伺服器就白等了。 

為了讓伺服器不會一直等待,可以設定保活計時器。伺服器每收到來自客戶端的資料,就重新設定保活計時器,時間設定通常為2小時。若2小時沒有收到客戶端的資料,伺服器就傳送乙個探測報文段,以後每隔75分鐘傳送一次。若一連傳送10個探測報文段後客戶端仍然沒有響應,伺服器就認為客戶端出了故障,接著就關閉這個連線。 

TCP中常見的定時器

tcp 是提供面向鏈結的 全雙工的 面向位元組流的可靠性服務。tcp 提供可靠的傳輸層,它使用的方法之一就是確認從另一端收到的資料。但是資料和確認都可能會丟失,tcp 通過在傳送時設定乙個定時器來解決這個問題。如果當定時器溢位時還沒收到確認,它就會重傳該資料。重傳計時器 retransmission...

TCP的定時器

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

TCP的定時器

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