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