TCP中的四個計時器

2021-08-21 21:35:23 字數 918 閱讀 5824

當tcp傳送報文後,就對此報文設定乙個重傳計時器,此時有兩種情況

在規定時間內成功收到對方的確認,就撤銷該報文的重傳定時器

到了規定時間仍然未收到對方的確認,則認為該報文丟失,重新傳送該報文,並將計時器時間復位

我們都知道tcp中有流量控制機制,當tcp的接收端宣布接收視窗為0時,傳送端會停止傳送資料,直到tcp接收端宣告視窗不為0。但我們都知道tcp是不會對ack報文段進行確認的,tcp只確認那些包含有資料的ack報文段。

假設乙個場景:如果乙個確認丟失了,則雙方就有可能因為等待對方而使連線終止,接收方等待接收資料(因為它已經向傳送方通告了乙個非0的視窗),而傳送方在等待允許它傳送資料的視窗更新,這時雙方就會形成死鎖,為避免死鎖的發生,tcp為傳送方設定了乙個堅持定時器,通過週期性的向接收方傳送探測報文來獲得接收端此時視窗的實際大小。

保活定時器用來防止連線雙方出現長時間的空閒連線(維持長連線)。

假設客戶端連上了伺服器,可能因為遇到故障或其他原因導致什麼事都不幹,但是連線會依舊存在,占用著伺服器的資源。伺服器為防止這種情況發生,就設定了乙個保活計時器,當有客戶端連線上來時,就啟動乙個對應的保活計時器並開始計時,如果伺服器接收到客戶端的資料,就會將計時器復位,超時時間通常設定為2小時,如果到達超時時間時,客戶端仍未傳送資料過來,伺服器就會傳送探測報文(心跳包)查詢客戶端此時狀態,若傳送了10個(每75s傳送乙個)探測報文段都沒回應,就認為客戶端出現故障,因為斷開連線。

時間等待計時器是在終止連線階段使用的。

當主動斷開連線的一方收到對方的fin報文段後,就會進入time_wait狀態,並會啟動時間等待計時器,該計時器通常設定時間為報文段最大生存時間(maximum segment lifetime)的兩倍。目的是為了防止自己對於對方fin報文段的確認報文丟失,如果丟失了,在2msl時間內,還可以接收到對方重傳的fin報文,可以進行再一次確認以及收到之前可能迷失在網路中的報文。

TCP中的計時器

tcp共使用以下四種計時器 重傳計時器 堅持計時器 保活計時器和時間等待計時器 這幾個計時器的主要特點如下 重傳計時器 retransmission timer 當tcp傳送報文段時,就建立該特定報文段的重傳計時器。可能發生兩種情況 1.若在計時器截止時間到之前收到了對此特定報文段的確認,則撤銷此計...

TCP中的四種計時器

1.重傳計時器 重傳計時器器的作用是在傳送完資料之後,就會開始計時,如果在規定時間內沒有收到傳送報文的ack就會重傳該報文。2堅持計時器 該計時器主要在擁塞控制的時候使用,就是當接收端通知傳送端視窗大小為0之後,傳送端會停止傳送資料,但是,但是當接收端有足夠快取之後,會重新通知新的視窗大小給傳送端,...

TCP中的四種計時器

什麼是計時器呢?我們可以理解成一塊鬧鐘,隔一段時間響一次,提醒tcp做特定的事情。tcp要正常工作,必須要有特定的計時器。那麼tcp中有哪些計時器呢?tcp中有四種計時器 timer 分別為 1.重傳計時器 retransmission timer 2.堅持計時器 persistent timer ...