【網路協議】TCP中的四大定時器
前言
對於每個TCP連線,TCP一般要管理4個不同的定時器:重傳定時器、堅持定時器、保活定時器、2MSL定時器。
重傳定時器
很明顯重傳定時器是用來計算TCP報文段的超時重傳時間的(至於超時重傳時間的確定,這裡涉及到一大堆的演算法,書上有說,我這裡不細談了)。每傳送一個報文段就會啟動重傳定時器,如果在定時器時間到後還沒收到對該報文段的確認,就重傳該報文段,並將重傳定時器復位,重新計算;如果在規定時間內收到了對該報文段的確認,則撤銷該報文段的重傳定時器。
堅持定時器
上篇文章中已經提到了,主要是為了應付零視窗大小通知可能導致的死鎖問題。如果接收端在向傳送端傳送了零視窗報文段後不久,接收端的接收快取又有了一些儲存空間,於是接收端向傳送端傳送了一個非零視窗大小的報文段,然而這個報文段在傳送過程中丟失了,傳送端沒有收到該報文段,就一直等待接收端傳送非零視窗的報文通知,而接收端並不知道報文段丟失了,而是覺得已經告訴傳送端了,就會一直等待傳送端傳送資料,如果沒有任何措施的話,這話死鎖的局面會一直延續下去。
為了解決這個問題,TCP為每一個連線設有一個堅持定時器(也叫持續計數器)。只要TCP連線的一方收到對方的零視窗通知,就啟動堅持定時器。若堅持定時器設定的時間到期,就傳送一個零視窗控測報文段(該報文段只有一個位元組的資料,它有一個序號,但該序號永遠不需要確認,因此該序號可以持續重傳),之後會出現以下三種情況:
1、對方在收到探測報文段後,在對該報文段的確認中給出現在的視窗值,如果視窗值仍未零,則收到這個報文段的一方將堅持定時器的值加倍並重啟。堅持計數器最大隻能增加到約60秒,在此之後,每次收到零視窗通知,堅持計數器的值就定位60秒。
2、對方在收到探測報文段後,在對該報文段的確認中給出現在的視窗值,如果視窗不為零,那麼死鎖的僵局就被打破了。
3、該探測報文發出後,會同時啟動重傳定時器,如果重傳定時器的時間到期,還沒有收到接收到發來的響應,則超時重傳探測報文。
保活定時器
保活定時器是為了應對兩個TCP連線間出現長時間的沒有資料傳輸的情況。如果客戶已與伺服器建立了TCP連線,但後來客戶端主機突然故障,則伺服器就不能再收到客戶端發來的資料了,而伺服器肯定不能這樣永久地等下去,保活定時器就是用來解決這個問題的。伺服器每收到一次客戶端的資料,就重新設定保活定時器,通常為2小時,如果2小時沒有收到客戶端的資料,服務端就傳送一個探測報文,以後每隔75秒傳送一次,如果連續傳送10次探測報文段後仍沒有收到客戶端的響應,伺服器就認為客戶端出現了故障,就可以終止這個連線。
2MSL定時器
2MSL定時器測量一個連線處於TIME—WAIT黃臺的時間,通常為2MSL(報文段壽命的兩倍)。2MSL定時器的設定主要是為了確保傳送的最後一個ACK報文段能夠到達對方,並防止之前與本連線有關的由於延遲等原因而導致已失效的報文被誤判為有效。
相關文章
- TCP協議之網路延時TCP協議
- TCP/IP協議 - 網路層TCP協議
- 網路通訊協議-TCP協議詳解!協議TCP
- 通過故事引申網路協議TCP協議TCP
- 網路協議 - TCP/IP 三次握手和四次揮手協議TCP
- 【網路】TCP協議中三次握手和四次揮手TCP協議
- TCP/IP 協議及網路分層模型TCP協議模型
- Asyncdb(四):MySQL網路協議分析MySql協議
- 論TCP協議中的擁塞控制機制與網路穩定性TCP協議
- 傳輸控制協議/網際網路協議(TCP / IP)是什麼意思?-VeCloud協議TCPCloud
- 計算機網路之七:TCP協議(1)計算機網路TCP協議
- 網路協議 - TCP/IP、HTTP、HTTPS、HTTP2.0協議TCPHTTP
- 網路時間協議介紹以及伺服器同步網路時間協議伺服器
- Wireshark中的TCP協議包分析TCP協議
- tcp/ip協議(1)三握四揮TCP協議
- 系列TCP/IP協議-TCP協議概述(011)TCP協議
- 計算機網路之TCP/IP協議簡介計算機網路TCP協議
- TCP協議中的三次握手與四次揮手TCP協議
- 計算機網路之八:TCP協議(2) TCP可靠傳輸的實現計算機網路TCP協議
- TCP協議TCP協議
- 計算機網路之四:ICMP協議計算機網路協議
- 實用TCP協議(1):TCP 協議簡介TCP協議
- 網路安全網路協議知識點中,http協議是什麼?協議HTTP
- 計算機網路學習筆記(10) TCP/IP協議棧 之TELNET協議計算機網路筆記TCP協議
- Python 網路資料傳輸協議 TCP 程式設計Python協議TCP程式設計
- Python 基於 TCP 傳輸協議的網路通訊實現PythonTCP協議
- 網路基礎和 TCP、IP 協議TCP協議
- 網路協議協議
- DNS何時使用TCP與UDP協議?DNSTCPUDP協議
- tcp/ip協議TCP協議
- TCP協議的特點TCP協議
- Java中的TCP/IP協議和IP地址JavaTCP協議
- 網路協議之:haproxy的Proxy Protocol代理協議協議Protocol
- web網路協議Web協議
- 網路管理協議協議
- 網路協議---DNS協議DNS
- 常見的網路協議協議
- TCP/IP網路協議棧:乙太網資料包結構、802.3、MTUTCP協議
- TCP協議的三次握手和四次揮手TCP協議