宇泰叭叭冷知識--TCP的定時器
TCP提供可靠的端到端數據傳輸的時候,保證端到端的方法之一就是確認從另一端收到的數據。但是數據和ACK在傳輸的過程中會有丟失的可能性,因此TCP通過在發送時設置一個定時器來解決這種問題。這期我們就來說說關于TCP的定時器的幾種類型以及它們的作用。
TCP的定時器可以分為七個類別:
建立連接定時器(connection-establishment timer)
重傳定時器(retransmission timer)
延遲應答定時器(delayed ACK timer)
堅持定時器(persist timer)
保活定時器(keepalive timer)
FIN_WAIT_2定時器(FIN_WAIT_2 timer)
TIME_WAIT定時器 (TIME_WAIT timer, 也叫2MSL timer)
建立連接定時器
建立連接定時器:顧名思義,這個定時器是在建立連接的時候使用的。建立連接的過程中,在發送SYN時,會啟動一個定時器(默認應該是3秒),如果SYN包丟失了,那么3秒以后會重新發送SYN包的(當然還會啟動一個新的定時器,設置成6秒超時),當然也不會一直沒完沒了的發SYN包,可以自行設置到底要重新發送幾次SYN包。
重傳定時器
重傳定時器在TCP發送數據時設定,在計時器超時后沒有收到返回的確認ACK,發送端就會重新發送隊列中需要重傳的報文段。使用RTO重傳計時器一般有如下規則:
1.當TCP發送了位于發送隊列最前端的報文段后就啟動這個RTO計時器;
如果隊列為空則停止計時器,否則重啟計時器;當計時器超時后,TCP會重傳發送隊列最前端的報文段;
2.當一個或者多個報文段被累計確認后,這個或者這些報文段會被清除出隊列
重傳計時器保證了接收端能夠接收到丟失的報文段,繼而保證了接收端交付給接收進程的數據始終的有序完整的。因為接收端永遠不會把一個失序不完整的報文段交付給接收進程。
延遲應答定時器
延遲應答也被稱為捎帶ACK,這個定時器是在延遲應答的時候使用的。為什么要延遲應答呢?延遲應答是為了提高網絡傳輸的效率。
舉例說明,比如服務端收到客戶端的數據后,不是立刻回ACK給客戶端,而是等一段時間(一般最大200ms),這樣如果服務端要是有數據需要發給客戶端,那么這個ACK就和服務端的數據一起發給客戶端了,這樣比立即回給客戶端一個ACK節省了一個數據包。
堅持定時器
我們知道TCP通過讓接收方指明希望從發送方接收的數據字節數(即窗口大小)來進行流量控制。如果窗口大小為0會發生什么情況呢?這將有效地阻止發送方傳送數據,直到窗口變為非0為止。接收端窗口變為非0后,就會發送一個確認ACK指明需要的報文段序號以及窗口大小。
如果這個確認ACK丟失了,則雙方就有可能因為等待對方而使連接終止:接收方等待接收數據(因為它已經向發送方通告了一個非0的窗口),而發送方在等待允許它繼續發送數據的窗口更新。為防止這種死鎖情況的發生,發送方使用一個堅持定時器 (persist timer)來周期性地向接收方查詢,以便發現窗口是否已增大。這些從發送方發出的報文段稱為窗口探查 (window probe)。
保活定時器
在TCP連接建立的時候指定了SO_KEEPALIVE,保活定時器才會生效。如果客戶端和服務端長時間沒有數據交互,那么需要保活定時器來判斷是否對端還活著,但是這個其實很不實用,因為默認是2小時沒有數據交互才探測,時間實在是太長了。如果你真的要確認對端是否活著, 那么應該自己實現心跳包,而不是依賴于這個保活定時器。
同類文章排行
- 萬馬高分子助力,國內首條公里級大長度環保
- 主營產品有哪些?
- 購買后產品發什么快遞?
- 節能轉型,電機產業鏈有哪些變革性機會?
- 更緊湊而高效的機器人世界
- 機器手臂的創新應用:輕薄短小、智能高效
- 產品供貨周期需要多久?
- 當半導體碰上 AMR,來一場智能化的精彩
- 堅持科技是第一生產力
- 通向智能工廠的硬核技術,哪些和你有關?
最新資訊文章
- 英孚康是羅克韋爾的替代品?不止如此
- 歐洲航天局利用MVG設備大幅增強新型 H
- Profinet轉canopen網關連接
- DATALOGIC得利捷 | 物流之眼利
- 施耐德電氣與標領智能裝備強強聯合,共創電
- 【有現貨】KB-LS10N-C KB-L
- 華北工控打造網安專用主板,基于飛騰D20
- PLC通訊革新:EtherNetIP轉P
- 華北工控ATX-6152:高度集成化!提
- 巴斯夫成功完成Ethernet-APL試
- HRPG-1000N3 系列:1000W
- RQB60W12 系列:60W 1/4
- NPB-450-NFC 系列:450W
- VFD 系列:150W~750W 工業用
- NGE12/18 系列:12W/18W
- 工業現場ModbusTCP轉EtherN
- DJM / FT系列:12V/38~15
- SI06W8/DI06W8 系列:超寬壓
- NGE100 (U) 系列:100W 環
- LOP-200/300系列:200W &