色猫咪av在线网址_91精品国产福利在线观看雪梨还会玩转热点_丁香花的视频免费观看_国产手机在线A∨免费视频_十八禁av无码免费网站APP_综合色一区二区亚洲_日韩精品小电影_漂亮人妻熟睡中被公侵犯_全新成人高清无码片_高级厕所偷窥白领美女嘘嘘

當(dāng)前位置: 首頁(yè) >應(yīng)用方案 >技術(shù)應(yīng)用 >

關(guān)于TCP keep-alive(?;?機(jī)制詳解

TCP/IP協(xié)議是計(jì)算機(jī)通信網(wǎng)絡(luò)中目前使用最多的協(xié)議,同時(shí)也融入了生活的方方面面,不管是瀏覽網(wǎng)頁(yè)使用的http/https協(xié)議、物聯(lián)網(wǎng)設(shè)備使用的MQTT/MQTTS協(xié)議與下載文件使用的ftp協(xié)議、工業(yè)以太網(wǎng)中使用的Modbus TCP協(xié)議等很多應(yīng)用層協(xié)議,都是基于TCP/IP協(xié)議簇。

前文我們介紹了TCP流控機(jī)制的詳解,本文我們將介紹TCP keep-alive(?;?機(jī)制詳解。

一、TCP Keepalive機(jī)制的定義和作用?

?TCP Keepalive機(jī)制?是一種用于檢測(cè)TCP連接是否仍然活躍的機(jī)制。當(dāng)TCP連接在一段時(shí)間內(nèi)沒(méi)有數(shù)據(jù)傳輸時(shí),Keepalive機(jī)制會(huì)發(fā)送探測(cè)報(bào)文來(lái)檢測(cè)對(duì)方是否仍然在線。如果對(duì)方正常響應(yīng),連接將被重置,等待下一個(gè)探測(cè)周期;如果對(duì)方?jīng)]有響應(yīng),連接將被認(rèn)為是死連接,并最終被關(guān)閉。

1、TCP Keepalive機(jī)制的工作原理

當(dāng)TCP連接在一段時(shí)間內(nèi)沒(méi)有數(shù)據(jù)傳輸時(shí),Keepalive機(jī)制會(huì)發(fā)送探測(cè)報(bào)文。如果對(duì)方正常工作并響應(yīng)這個(gè)探測(cè)報(bào)文,連接將被重置,等待下一個(gè)探測(cè)周期。如果對(duì)方?jīng)]有響應(yīng),連續(xù)幾次探測(cè)后,TCP會(huì)認(rèn)為連接已經(jīng)死亡,并關(guān)閉該連接。

2、TCP Keepalive機(jī)制的相關(guān)參數(shù)

TCP Keepalive機(jī)制涉及幾個(gè)關(guān)鍵參數(shù):

??keepidle?:無(wú)數(shù)據(jù)傳輸時(shí)開(kāi)始發(fā)送探測(cè)報(bào)文的時(shí)間間隔。

??keepinterval?:發(fā)送探測(cè)報(bào)文的間隔時(shí)間。

??keepcount?:發(fā)送探測(cè)報(bào)文的次數(shù),如果對(duì)方?jīng)]有響應(yīng),連接將被關(guān)閉。


二、TCP Keep-alive應(yīng)用場(chǎng)景

一般的,TCP的客戶端與服務(wù)器的連接類(lèi)型可以分為:

1、短鏈接:客戶端連接到服務(wù)器后,即開(kāi)始與服務(wù)器交互,請(qǐng)求資源,上報(bào)數(shù)據(jù)等,交互完畢后即斷開(kāi)與服務(wù)器的連接,如Http協(xié)議等。

2、長(zhǎng)連接:客戶端連接到服務(wù)器后,不一定會(huì)立即進(jìn)行數(shù)據(jù)的傳遞,而是一直保持連接狀態(tài),且雙方一般不會(huì)主動(dòng)斷開(kāi)連接,如MQTT協(xié)議等。

需要注意的是,不管是長(zhǎng)連接還是短連接都不是TCP協(xié)議本身所規(guī)定的,TCP只是給應(yīng)用層提供了建立與斷開(kāi)連接的方法與資源管理。

可以想到,當(dāng)客戶端與服務(wù)器處于長(zhǎng)連接狀態(tài)下,如果服務(wù)器突然斷電了,服務(wù)器也無(wú)法通知客戶端異常狀況,客戶端就無(wú)法察覺(jué)服務(wù)器異常。只有當(dāng)客戶端向服務(wù)器發(fā)送數(shù)據(jù)時(shí),由于超時(shí)機(jī)制,客戶端才能知道服務(wù)器異常。并且數(shù)據(jù)也自然丟棄了。而且如果異常連接無(wú)法釋放,也會(huì)導(dǎo)致系統(tǒng)資源的消耗與浪費(fèi)。所以在長(zhǎng)連接下,就可以啟用TCP Keep-alive機(jī)制,避免一方可能意外斷電、死機(jī)、崩潰、重啟,還是中間路由網(wǎng)絡(luò)無(wú)故斷開(kāi),從而導(dǎo)致的異常連接。

三、TCP Keep-alive機(jī)制

相關(guān)參數(shù)如下所示:

SO_KEEPALIVE:是否開(kāi)啟?;?/span>

TCP_KEEPIDLE:Start keeplives after this period

TCP_KEEPINTVL:Interval between keepalives

TCP_KEEPCNT:Number of keepalives before death

SO_KEEPALIVE:Keep-alive可以是雙向的,即客戶端可以主動(dòng)給服務(wù)器發(fā),或服務(wù)器主動(dòng)給客戶端發(fā)送。在使能了SO_KEEPALIVE后,即啟用了保活機(jī)制

TCP_KEEPIDLE:當(dāng)客戶端與服務(wù)器沒(méi)有交互數(shù)據(jù)達(dá)到TCP_KEEPIDLE的空閑時(shí)間后,TCP將會(huì)給對(duì)方發(fā)送探測(cè)包。

TCP_KEEPINTVL:如果上一次的探測(cè)包沒(méi)有得到響應(yīng),那么將用TCP_KEEPINTVL作為下一次的探測(cè)包間隔

TCP_KEEPCNT:當(dāng)連續(xù)發(fā)送了TCP_KEEPCNT次數(shù)的探測(cè)包都未收到響應(yīng)后,本地將會(huì)釋放當(dāng)前連接資源,并且通知應(yīng)用層連接斷開(kāi)

四、TCP Keep-alive實(shí)例

正常探測(cè)包

1 TCP keep-alive(保活)機(jī)制詳解

掉線過(guò)程

2 TCP keep-alive(保活)機(jī)制詳解

接下來(lái)測(cè)試KeepAlive斷開(kāi):正常TCP建立連接 后,拔掉網(wǎng)線:重新抓包如下圖所示:

3 TCP keep-alive(保活)機(jī)制詳解

今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動(dòng)化的發(fā)展,提升資源利用率,更多無(wú)線通信技術(shù)資料信息,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專(zhuān)員!


相關(guān)閱讀:

1、無(wú)線模塊通過(guò)TCP/IP協(xié)議向PC端數(shù)據(jù)傳輸解析

2、基礎(chǔ)通信協(xié)議棧:TCP協(xié)議、IP協(xié)議詳解

3、UDP協(xié)議與TCP協(xié)議區(qū)別對(duì)比及應(yīng)用場(chǎng)景方案

4、什么是TCP協(xié)議粘包以及如何解決TCP粘包問(wèn)題

5、物聯(lián)網(wǎng)應(yīng)用中常見(jiàn)通信協(xié)議匯總分享


4000-330-990

https://www.wjx.cn/jq/84863372.aspx