第十七章 TCP?;顧C(jī)制

?;顧C(jī)制是一種在不影響數(shù)據(jù)流內(nèi)容的情況下探測(cè)對(duì)方的方式。
和名字正好相反,是服務(wù)器用來(lái)確認(rèn)什么時(shí)候應(yīng)該斷開(kāi)連接的一種機(jī)制。

保活機(jī)制

?;罟δ茉谀J(rèn)情況下是關(guān)閉的o TCP連接的任何一端都可以請(qǐng)求打開(kāi)這一功能。保活功能可以被設(shè)置在連接的一端、兩端,或者兩端都沒(méi)有。

機(jī)制

在一段時(shí)間(稱(chēng)為?;顣r(shí)間,keepalivetime)內(nèi)連接處于非活動(dòng)狀態(tài),開(kāi)啟保活功能的一端將向?qū)Ψ桨l(fā)送一個(gè)?;钐綔y(cè)報(bào)文。如果發(fā)送端沒(méi)有收到響應(yīng)報(bào)文,那么經(jīng)過(guò)一個(gè)已經(jīng)提前配置好的保活時(shí)間間隔(keepaliveinterval),將繼續(xù)發(fā)送?;钐綔y(cè)報(bào)文,直到發(fā)送探測(cè)報(bào)文的次數(shù)達(dá)到?;钐綔y(cè)數(shù)(keepaliveprobe),這時(shí)對(duì)方主機(jī)將被確認(rèn)為不可到達(dá),連接也將被中斷。

報(bào)文

保活探測(cè)報(bào)文為一個(gè)空?qǐng)?bào)文段(或1個(gè)字節(jié)),序列號(hào)等于對(duì)方主機(jī)發(fā)送的ACK報(bào)文的最大序列號(hào)減1。
因?yàn)檫@一序列號(hào)的數(shù)據(jù)段已經(jīng)被成功接收,所以不會(huì)對(duì)到達(dá)的報(bào)文段造成影響,但探測(cè)報(bào)文返回的響應(yīng)可以確定連接是否仍在工作。接收方收到該報(bào)文以后,會(huì)認(rèn)為是之前丟失的報(bào)文,所以不會(huì)添加進(jìn)數(shù)據(jù)流中。但是仍然要發(fā)送一個(gè)ACK確認(rèn)。

探測(cè)及其響應(yīng)報(bào)文丟失后都不會(huì)重傳。探測(cè)方主動(dòng)不重傳,相應(yīng)方的ACK報(bào)文并不能自己重傳,所以需要保活探測(cè)數(shù)。

?;罱Y(jié)果

  1. 對(duì)方主機(jī)仍在工作
    服務(wù)器端正常收到ACK,說(shuō)明客戶端正常工作。
    請(qǐng)求端將?;钣?jì)時(shí)器重置。重新計(jì)時(shí)。
  2. 對(duì)方主機(jī)已經(jīng)崩潰
    對(duì)方的TCP將不會(huì)響應(yīng)ACK。
    超過(guò)?;钐綔y(cè)數(shù)以后,認(rèn)為對(duì)方主機(jī)已經(jīng)關(guān)閉,連接也將被斷開(kāi)。
  3. 客戶主機(jī)崩潰并且已重啟
    客戶端響應(yīng)是一個(gè)重置報(bào)文段,請(qǐng)求端將會(huì)斷開(kāi)連接。
  4. 對(duì)方主機(jī)仍在工作
    但是因?yàn)槠渌蚓褪菦](méi)有收到ACK。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1、TCP狀態(tài)linux查看tcp的狀態(tài)命令:1)、netstat -nat 查看TCP各個(gè)狀態(tài)的數(shù)量2)、lso...
    北辰青閱讀 9,482評(píng)論 0 11
  • 個(gè)人認(rèn)為,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記,這雖然只是...
    貳零壹柒_fc10閱讀 5,086評(píng)論 0 8
  • 1.這篇文章不是本人原創(chuàng)的,只是個(gè)人為了對(duì)這部分知識(shí)做一個(gè)整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,125評(píng)論 6 174
  • 套接字選項(xiàng)SO_RESUEADDR 即使端口處于2MSL狀態(tài),使用該選項(xiàng),仍然能夠在該端口建立連接。服務(wù)器常會(huì)設(shè)置...
    Myth52125閱讀 1,432評(píng)論 0 0
  • 21.1 引言 TCP提供可靠的運(yùn)輸層。它使用的方法之一就是確認(rèn)從另一端收到的數(shù)據(jù)。但數(shù)據(jù)和確認(rèn)都有可能會(huì)丟失。T...
    張芳濤閱讀 3,039評(píng)論 0 8