溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

TCP協(xié)議中的四種定時(shí)器

發(fā)布時(shí)間:2020-06-14 14:13:21 來源:網(wǎng)絡(luò) 閱讀:1167 作者:暮回_zz 欄目:網(wǎng)絡(luò)安全

TCP四種定時(shí)器

     重傳計(jì)時(shí)器、堅(jiān)持計(jì)時(shí)器、?;钣?jì)時(shí)器、時(shí)間等待計(jì)時(shí)器


重傳計(jì)時(shí)器:


     在TCP發(fā)送報(bào)文時(shí)創(chuàng)建,用來確認(rèn)報(bào)文是否成功發(fā)送,超過預(yù)定時(shí)間,則重新發(fā)送,設(shè)置重傳計(jì)時(shí)器之后,通常有兩種情況:

     1、在計(jì)時(shí)器截止時(shí)間到達(dá)之前收到了對以發(fā)送報(bào)文的確認(rèn)信號(hào),則撤銷此計(jì)數(shù)器;

     2、計(jì)時(shí)器時(shí)間到達(dá)仍未收到確認(rèn)信號(hào),則重新發(fā)送該報(bào)文,并將計(jì)時(shí)器復(fù)位。


堅(jiān)持計(jì)時(shí)器:


     這種計(jì)時(shí)器通常是和窗口大小有關(guān)的。

     先考慮這樣一種場景:發(fā)送端由于發(fā)送速度太快,接收端的窗口大小為零,這是接收段就會(huì)發(fā)送信號(hào)告訴發(fā)送端,我現(xiàn)在窗口大小為零,先不要發(fā)送數(shù)據(jù)了,接收端接收到之后,暫停發(fā)送數(shù)據(jù);一段時(shí)間之后,接收端有了新的窗口大小,這時(shí)會(huì)再向發(fā)送段發(fā)送確認(rèn)信號(hào),我現(xiàn)在緩沖區(qū)有空間了,并告訴了自己的窗口大小【在前面三次握手和四次揮手中可以看到,我們是不需要對確認(rèn)信號(hào)再次進(jìn)行確認(rèn)的】。但是這里可能會(huì)出現(xiàn)問題的是,接收端發(fā)送的這個(gè)確認(rèn)數(shù)據(jù)包可能會(huì)丟失,一旦丟失,接收端在等待著發(fā)送端發(fā)送數(shù)據(jù),發(fā)送端在等待著接收段發(fā)來確認(rèn)信號(hào),以繼續(xù)發(fā)送數(shù)據(jù),這就造成了死鎖。

     很明顯,這種情況是由于接收端窗口大小為零之后可能導(dǎo)致的問題。為了避免這種情況,就有了堅(jiān)持計(jì)數(shù)器的產(chǎn)生。當(dāng)發(fā)送端收到窗口大小為0的確認(rèn)信號(hào)時(shí),就啟動(dòng)了堅(jiān)持計(jì)數(shù)器,如果堅(jiān)持計(jì)數(shù)器的時(shí)間到達(dá)之后,還沒有收到接收端發(fā)來的確認(rèn)信號(hào),就會(huì)主動(dòng)發(fā)送一個(gè)特殊的報(bào)文端,叫做探測報(bào)文。探測報(bào)文只有一個(gè)字節(jié)的數(shù)據(jù),它有一個(gè)序號(hào),和普通報(bào)文不同,它的序號(hào)不需要被確認(rèn)。探測報(bào)文是為了提醒接收端,剛剛給我發(fā)送的窗口大小已經(jīng)丟了,要重新想我發(fā)送ACK確認(rèn)信號(hào),如果接收端沒有回應(yīng),則需要重新發(fā)送一個(gè)探測報(bào)文,并將堅(jiān)持計(jì)數(shù)器的時(shí)間加倍,直到增大到60s。在這之后,每隔60s就發(fā)送一個(gè)探測報(bào)文,直到窗口重新打開。


     TCP規(guī)定,即使窗口大小為0,也必須接收的三種報(bào)文: 零窗口探測報(bào)文段、確認(rèn)報(bào)文段和攜帶緊急數(shù)據(jù)的報(bào)文段。


保活計(jì)時(shí)器:


     用來防止兩個(gè)TCP之間的連接出現(xiàn)長時(shí)期的空閑。

     當(dāng)client打開了server的連接,傳送了很短時(shí)間的數(shù)據(jù)之后,就保持靜默,可能會(huì)因?yàn)楦鞣N原因?qū)е拢F(xiàn)在它確實(shí)處于了空閑狀態(tài)。如果由于client出現(xiàn)故障,那么這個(gè)連接就一直處于打開狀態(tài)。

     為了避免這種情況,引入了保活計(jì)時(shí)器。每當(dāng)server收到了client發(fā)來的信息,就將計(jì)時(shí)器清零。如果server超過了保活計(jì)時(shí)器的時(shí)間仍沒有收到任何消息,就會(huì)向client發(fā)送探測報(bào)文段,若發(fā)送了10個(gè)探測報(bào)文段之后仍沒有反應(yīng),則認(rèn)為client故障,server主動(dòng)斷開連接。



時(shí)間等待計(jì)時(shí)器:


     連接終止期間使用【TIME_WAIT】。

     首先認(rèn)識(shí)一個(gè)概念,MSL,報(bào)文最大生存時(shí)間。任何報(bào)文在網(wǎng)絡(luò)上超過MSL之后,將被直接丟棄。

     在TCP第三次揮手期間,客戶端收到了服務(wù)器發(fā)來的FIN報(bào)文,之后客戶端啟動(dòng)了TIME_WAIT計(jì)時(shí)器,時(shí)間設(shè)置為2MSL,并發(fā)送最后一個(gè)ACK。保證了2MSL時(shí)間內(nèi)server可以收到最后一個(gè)ACK確認(rèn)信號(hào),同時(shí)保證了在之前發(fā)送的報(bào)文不會(huì)在連接關(guān)閉之后再次騷擾server,因?yàn)榫W(wǎng)絡(luò)中的數(shù)據(jù)包到達(dá)目的地的時(shí)間是不確定的。



重傳計(jì)時(shí)器 通常設(shè)置為 60s

堅(jiān)持計(jì)時(shí)器 門限值60s

保活計(jì)時(shí)器 通常設(shè)置為2小時(shí)

時(shí)間等待計(jì)時(shí)器 通常設(shè)置為2MSL


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI