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