【网络协议】TCP中的四大定时器
? ? 前言?
? ? 對于每個(gè)TCP連接,TCP一般要管理4個(gè)不同的定時(shí)器:重傳定時(shí)器、堅(jiān)持定時(shí)器、?;疃〞r(shí)器、2MSL定時(shí)器。
? ? 重傳定時(shí)器?
? ? 非常明顯重傳定時(shí)器是用來計(jì)算TCP報(bào)文段的超時(shí)重傳時(shí)間的(至于超時(shí)重傳時(shí)間的確定,這里涉及到一大堆的算法,書上有說,我這里不細(xì)談了)。每發(fā)送一個(gè)報(bào)文段就會啟動重傳定時(shí)器,假設(shè)在定時(shí)器時(shí)間到后還沒收到對該報(bào)文段的確認(rèn),就重傳該報(bào)文段,并將重傳定時(shí)器復(fù)位,又一次計(jì)算;假設(shè)在規(guī)定時(shí)間內(nèi)收到了對該報(bào)文段的確認(rèn),則撤銷該報(bào)文段的重傳定時(shí)器。
? ? 堅(jiān)持定時(shí)器?
? ? 上篇文章中已經(jīng)提到了,主要是為了應(yīng)付零窗體大小通知可能導(dǎo)致的死鎖問題。假設(shè)接收端在向發(fā)送端發(fā)送了零窗體報(bào)文段后不久,接收端的接收緩存又有了一些存儲空間,于是接收端向發(fā)送端發(fā)送了一個(gè)非零窗體大小的報(bào)文段,然而這個(gè)報(bào)文段在傳送過程中丟失了,發(fā)送端沒有收到該報(bào)文段,就一直等待接收端發(fā)送非零窗體的報(bào)文通知,而接收端并不知道報(bào)文段丟失了,而是覺得已經(jīng)告訴發(fā)送端了,就會一直等待發(fā)送端發(fā)送數(shù)據(jù),假設(shè)沒有不論什么措施的話,這話死鎖的局面會一直延續(xù)下去。
? ? 為了解決問題,TCP為每個(gè)連接設(shè)有一個(gè)堅(jiān)持定時(shí)器(也叫持續(xù)計(jì)數(shù)器)。僅僅要TCP連接的一方收到對方的零窗體通知,就啟動堅(jiān)持定時(shí)器。若堅(jiān)持定時(shí)器設(shè)置的時(shí)間到期,就發(fā)送一個(gè)零窗體控測報(bào)文段(該報(bào)文段僅僅有一個(gè)字節(jié)的數(shù)據(jù),它有一個(gè)序號,但該序號永遠(yuǎn)不須要確認(rèn),因此該序號能夠持續(xù)重傳),之后會出現(xiàn)下面三種情況:
? ? 1、對方在收到探測報(bào)文段后,在對該報(bào)文段的確認(rèn)中給出如今的窗體值,假設(shè)窗體值仍未零,則收到這個(gè)報(bào)文段的一方將堅(jiān)持定時(shí)器的值加倍并重新啟動。堅(jiān)持計(jì)數(shù)器最大僅僅能添加到約60秒,在此之后,每次收到零窗體通知,堅(jiān)持計(jì)數(shù)器的值就定位60秒。
? ? 2、對方在收到探測報(bào)文段后,在對該報(bào)文段的確認(rèn)中給出如今的窗體值,假設(shè)窗體不為零,那么死鎖的僵局就被打破了。
? ? 3、該探測報(bào)文發(fā)出后,會同一時(shí)候啟動重傳定時(shí)器,假設(shè)重傳定時(shí)器的時(shí)間到期,還沒有收到接收到發(fā)來的響應(yīng),則超時(shí)重傳探測報(bào)文。
? ? ?;疃〞r(shí)器?
? ? ?;疃〞r(shí)器是為了應(yīng)對兩個(gè)TCP連接間出現(xiàn)長時(shí)間的沒有傳輸數(shù)據(jù)的情況。假設(shè)客戶已與server建立了TCP連接,但后來client主機(jī)突然故障,則server就不能再收到client發(fā)來的數(shù)據(jù)了,而server肯定不能這樣永久地等下去,保活定時(shí)器就是用來解決問題的。server每收到一次client的數(shù)據(jù),就又一次設(shè)置?;疃〞r(shí)器,通常為2小時(shí),假設(shè)2小時(shí)沒有收到client的數(shù)據(jù),服務(wù)端就發(fā)送一個(gè)探測報(bào)文,以后每隔75秒發(fā)送一次,假設(shè)連續(xù)發(fā)送10次探測報(bào)文段后仍沒有收到client的響應(yīng),server就覺得client出現(xiàn)了故障,就能夠終止這個(gè)連接。
? ? 2MSL定時(shí)器?
? ? 2MSL定時(shí)器測量一個(gè)連接處于TIME—WAIT黃臺的時(shí)間,通常為2MSL(報(bào)文段壽命的兩倍)。2MSL定時(shí)器的設(shè)置主要是為了確保發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)對方,并防止之前與本連接有關(guān)的因?yàn)檠舆t等原因而導(dǎo)致已失效的報(bào)文被誤判為有效。
? ??轉(zhuǎn)載于:https://www.cnblogs.com/mfrbuaa/p/3861493.html
總結(jié)
以上是生活随笔為你收集整理的【网络协议】TCP中的四大定时器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 吸引顾客办会员卡宣传文案30句
- 下一篇: HTTP协议状态码详解(HTTP Sta