TCP 四種定時(shí)器(重傳定時(shí)器,堅(jiān)持計(jì)時(shí)器,保活定時(shí)器,時(shí)間等待計(jì)時(shí)器)
TCP 四種定時(shí)器
重傳定時(shí)器
主要為了防止報(bào)文丟失或者阻塞。當(dāng)A向B發(fā)送報(bào)文時(shí),就會(huì)啟動(dòng)重傳定時(shí)器,若在定時(shí)器到達(dá)之后,仍沒有收到B的確認(rèn)報(bào)文,則A會(huì)重新發(fā)送上次發(fā)送的報(bào)文。同時(shí),令重傳定時(shí)器復(fù)位。繼續(xù)計(jì)時(shí)。
堅(jiān)持計(jì)時(shí)器
此計(jì)時(shí)器針對(duì)下面場(chǎng)景:
當(dāng)B向A發(fā)送了0窗口報(bào)文,B此時(shí)已經(jīng)沒有空間接受A發(fā)送的數(shù)據(jù)了,通知A停止發(fā)送。A在收到后即停止發(fā)送,等待一段時(shí)間后,B有了一些空間,可以繼續(xù)接收了。此時(shí)再向A發(fā)送非0窗口報(bào)文。如果此非0窗口報(bào)文在網(wǎng)絡(luò)中阻塞或者丟失了,那么A將永遠(yuǎn)以為B沒有空間接收數(shù)據(jù),B也永遠(yuǎn)在等待A發(fā)來的數(shù)據(jù)。這樣就會(huì)造成死鎖的局面。
在A接收到B發(fā)送的0窗口報(bào)文后,就設(shè)立堅(jiān)持定時(shí)器,當(dāng)定時(shí)器到達(dá)后,A就像B發(fā)送一個(gè)探測(cè)報(bào)文。B收到探測(cè)報(bào)文后會(huì)給出A確認(rèn)報(bào)文。
* 確認(rèn)報(bào)文中的窗口值不是0,則死鎖局面打開。
* 確認(rèn)報(bào)文中的窗口值是0,則重置堅(jiān)持定時(shí)器,并將時(shí)間翻倍,但是最大不能超過60秒。(到達(dá)60后,以后都是60秒)
* A在發(fā)送探測(cè)報(bào)文后,啟動(dòng)重傳定時(shí)器,若沒有收到B的確認(rèn)報(bào)文,則重傳探測(cè)報(bào)文。
保活定時(shí)器
應(yīng)用場(chǎng)景:客戶機(jī)因?yàn)槟承┕收贤顺?,而服?wù)器并不知道,還在一直等待客戶機(jī)發(fā)來的數(shù)據(jù),這樣就白白浪費(fèi)了計(jì)算機(jī)資源。
在服務(wù)器端設(shè)置?;钣?jì)時(shí)器,服務(wù)器每收到客戶機(jī)的一次消息,就重置?;钣?jì)時(shí)器,時(shí)間通常為2小時(shí)。若2個(gè)小時(shí)都沒有收到客戶機(jī)發(fā)來的消息,服務(wù)器就像客戶機(jī)發(fā)送一個(gè)探測(cè)報(bào)文,以后每隔75分鐘發(fā)送一次。若連續(xù)發(fā)送了10個(gè)探測(cè)報(bào)文后客戶機(jī)仍無響應(yīng),則服務(wù)器就會(huì)認(rèn)為客戶機(jī)故障,并斷開這次連接。
時(shí)間等待計(jì)時(shí)器
時(shí)間等待及時(shí)器用于TCP“四次揮手”階段。當(dāng)客戶端向服務(wù)器發(fā)送最后一次確認(rèn)報(bào)文時(shí),就設(shè)定一個(gè)時(shí)間等待及時(shí)器,等待2MSL時(shí)間后再結(jié)束連接。
MSL:最長(zhǎng)報(bào)文段壽命,大小為30s~2分鐘。根據(jù)不同的應(yīng)用有不同的設(shè)置。
客戶機(jī)為什么要等待2MSL時(shí)間?
①為了保證服務(wù)器能夠收到客戶機(jī)發(fā)送的最后一個(gè)確認(rèn)報(bào)文。
因?yàn)檫@個(gè)最后報(bào)文可能丟失,服務(wù)器收不到客戶機(jī)的確認(rèn)信息,就無法進(jìn)入CLOSED狀態(tài)。就會(huì)在重傳定時(shí)器到達(dá)后重新發(fā)送上一次的報(bào)文(此時(shí)會(huì)重置時(shí)間等待計(jì)時(shí)器,再次等待2MSL時(shí)間),這樣客戶機(jī)在等待2MSL時(shí)間過程中就可以收到這個(gè)重傳報(bào)文,并重新發(fā)送確認(rèn)報(bào)文。
②防止出現(xiàn)“已失效的連接請(qǐng)求報(bào)文”再次出現(xiàn)的情況。
客戶機(jī)在等待的這2MSL時(shí)間中,就可以使此次連接的所有報(bào)文都從網(wǎng)絡(luò)中消失,這樣在下一次新的連接中就不會(huì)出現(xiàn)舊的連接請(qǐng)求報(bào)文。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
淺談測(cè)試驅(qū)動(dòng)開發(fā)TDD之爭(zhēng)
在軟件行業(yè)中,神仙打架的名場(chǎng)面,那就不得不提的是2014年的那場(chǎng)——測(cè)試驅(qū)動(dòng)開發(fā)(TDD)之爭(zhēng)。2021-05-05密碼哈希函數(shù) Bcrypt的最大密碼長(zhǎng)度限制詳解
這篇文章主要介紹了密碼哈希函數(shù) Bcrypt的最大密碼長(zhǎng)度限制詳解的相關(guān)資料,需要的朋友可以參考下2017-03-03Unity3D中shader 輪廓描邊效果實(shí)現(xiàn)代碼
這篇文章主要介紹了Unity3D中shader 輪廓描邊效果的相關(guān)資料,需要的朋友可以參考下2017-03-03詳解為什么現(xiàn)代系統(tǒng)需要一個(gè)新的編程模型
如今高要求的分布式系統(tǒng)的建造者遇到了不能完全由傳統(tǒng)的面向?qū)ο缶幊?OOP)模型解決的挑戰(zhàn),但這可以從Actor模型中獲益。2021-05-05一文讀懂modbus slave和modbus poll使用說明
modbus poll和modbus slave是一款實(shí)用的modbus開發(fā)和調(diào)試工具,可以非常方便的進(jìn)行modbus調(diào)試,是非常有用的Modbus主機(jī)/從機(jī)模擬程序,這篇文章給大家介紹modbus slave和modbus poll使用說明,感興趣的朋友一起看看吧2021-04-04計(jì)算機(jī)二級(jí)如何一次性通過?給NCRE焦躁心情降溫!
計(jì)算機(jī)二級(jí)到現(xiàn)階段應(yīng)該如何備考,該聽什么課?該針對(duì)哪些考點(diǎn)重點(diǎn)學(xué)習(xí),這些都要做到心里有數(shù),有計(jì)劃性。這篇文章為大家分享了計(jì)算機(jī)二級(jí)備考技巧,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08