介紹一下tcp連線中的4個定時器:
重傳定時器、堅持定時器、保活定時器、2msl定時器,他們存在於每乙個連線中。
重傳定時器是用來計算tcp報文段的超時重傳時間的,每傳送乙個報文段就會啟動重傳定時器,如果在定時器時間到後還沒收到對該報文段的確認,就重傳該報文段,並將重傳定時器復位,重新計算;如果在規定時間內收到了對該報文段的確認,則撤銷該報文段的重傳定時器。
堅持定時器主要是為了應付零視窗大小通知可能導致的死鎖問題。如果接收端在向傳送端傳送了零視窗報文段後不久,接收端的接收快取又有了一些儲存空間,於是接收端向傳送端傳送了乙個非零視窗大小的報文段,然而這個報文段在傳送過程中丟失了,傳送端沒有收到該報文段,就一直等待接收端傳送非零視窗的報文通知,而接收端並不知道報文段丟失了,而是覺得已經告訴傳送端了,就會一直等待傳送端傳送資料,如果沒有任何措施的話,這話死鎖的局面會一直延續下去。
為了解決這個問題,tcp為每乙個連線設有乙個堅持定時器。只要tcp連線的一方收到對方的零視窗通知,就啟動堅持定時器。若堅持定時器設定的時間到期,就傳送乙個零視窗控測報文段,該報文段只有乙個位元組的資料,它有乙個序號,但該序號永遠不需要確認,因此該序號可以持續重傳,這種狀態會持續到視窗被開啟,或者應用程序使用的連線被終止。
保活定時器是為了應對兩個tcp連線間出現長時間的沒有資料傳輸的情況,而伺服器又想知道客戶端主機是否崩潰關機,或則崩潰重啟。伺服器每收到一次客戶端的資料,就重新設定保活定時器,通常為2小時,如果2小時沒有收到客戶端的資料,服務端就傳送乙個探測報文,以後每隔75秒傳送一次,如果連續傳送10次探測報文段後仍沒有收到客戶端的響應,伺服器就認為客戶端出現了故障,就可以終止這個連線。
在tcp四次揮手中,主動斷開連線的一方會進入到到乙個2msl的time-wait狀態,2msl定時器就是測量這個time—wait狀態的時間,(2msl報文段壽命的兩倍)。
2msl的time-wait狀態的主要作用:1.
確保傳送的最後乙個ack報文段能夠到達對方,在ack報文丟失的情況下確保對方正常斷開連線。
2.防止之前與本連線有關的由於延遲等原因而導致已失效的報文在新的連線中被誤判為有效。
TCP中的四大定時器
對於每個tcp連線,tcp一般要管理4個不同的定時器 重傳定時器 堅持定時器 保活定時器 2msl定時器。重傳定時器 每傳送乙個報文段就會啟動重傳定時器,如果在定時器時間到後還沒收到對該報文段的確認,就重傳該報文段,並將重傳定時器復位,重新計算 如果在規定時間內收到了對該報文段的確認,則撤銷該報文段...
TCP協議中的定時器
tcp協議中的定時器 1 連線建立 connection establishment 定時器 在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。2 重傳 retransmission 定時器 在tcp傳送某個資料段時設定。在滑動視窗協議中,接受視窗會在連續收到的包序...
TCP協議中的定時器
1 連線建立 connection establishment 定時器 在傳送syn報文段建立一條新連線時啟動。如果在75秒內沒有收到響應,連線建立將中止。2 重傳 retransmission 定時器 在tcp傳送某個資料段時設定。在滑動視窗協議中,接受視窗會在連續收到的包序列中的最後乙個包向接收...