-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
tcp心跳機(jī)制(tcp 心跳)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于tcp心跳機(jī)制的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
你只需要給出你的關(guān)鍵詞,它就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端,官網(wǎng):https://ai.de1919.com
本文目錄:
一、tcp的幾個半狀態(tài)
當(dāng)TCP連接中 A 向 B 發(fā)送FIN請求關(guān)閉,另一端B回應(yīng)ACK之后,B沒有立即發(fā)送FIN給A,A處于半連接狀態(tài),此時A可以接收B發(fā)送的消息,但是A已經(jīng)不能再向B發(fā)送消息。
發(fā)送在三次握手中。
如果A向B發(fā)起連接,B也按照正常情況響應(yīng)了,但是A不進(jìn)行三次握手,這就是半連接。
半連接攻擊 :半連接,會造成B分配的內(nèi)存資源就這么一直耗著,直到資源耗盡(SYN攻擊)
如果一方關(guān)閉或者異常關(guān)閉(斷電,斷網(wǎng)),而另一方并不知情,這樣的連接稱之為半打開。
處于半打開的連接,如果雙方不進(jìn)行數(shù)據(jù)通信,是發(fā)現(xiàn)不了問題的;只有再次通信時才會知道這個連接處于半打開狀態(tài)。
如:A和B連接,B異常關(guān)閉了,A并不知道B關(guān)閉了,直到A給B發(fā)送消息B無響應(yīng),這時A才知道B出了異常。
解決辦法 : 心跳機(jī)制 ,A隔一段時間給B發(fā) 特定消息 ,B收到這個 特定消息 后,回復(fù)A 特定消息(RST包) ,A如果沒收到RST包,就說明需要重新建立連接了。
二、socket 如果不關(guān)閉會自動關(guān)閉嗎?為什么要心跳連接?
如果不主動關(guān)閉socket的話,系統(tǒng)不會自動關(guān)閉的,除非當(dāng)前進(jìn)程掛掉了,操作系統(tǒng)把占用的socket回收了才會關(guān)閉。
為什么需要心跳連接主要是判斷當(dāng)前連接是否是有效的、可被使用的。在實際應(yīng)用中假設(shè)一段時間沒有數(shù)據(jù)傳輸時候理論上說應(yīng)該連接是沒有問題的,但是網(wǎng)絡(luò)復(fù)雜,中途出現(xiàn)問題也是常見的,網(wǎng)線被掐斷了、對方進(jìn)程掛掉了、頻繁丟包等,這時候TCP連接是不可使用的,但是對于應(yīng)用層并不知道,如果需知道網(wǎng)絡(luò)情況則要很復(fù)雜的超時進(jìn)行了解,TCP從底層就實現(xiàn)了這樣的功能。心跳機(jī)制是TCP在一段時間間隔后發(fā)送確定連接端是否還存在,如果存在的話就會回傳一個包確定網(wǎng)絡(luò)有效,如果心跳包有問題,則通知上層應(yīng)用當(dāng)前網(wǎng)絡(luò)有問題了。
三、tcp建立連接后休眠
TCP連接建立后,會進(jìn)入休眠狀態(tài),也就是等待客戶端發(fā)出請求報文,此時服務(wù)器會一直保持連接,直到客戶端發(fā)出請求報文或超時時間到達(dá),服務(wù)器才會處理該請求報文并進(jìn)行響應(yīng)。在TCP連接建立后休眠期間,可以使用狀態(tài)輪詢、心跳檢測等機(jī)制來檢測客戶端是否處于活動狀態(tài),以及避免空連接的超時斷開。
四、paho mqtt c 源碼分析-2 (心跳機(jī)制)
MQTT是基于TCP的,因此需要考慮連接心跳,paho mqtt c的心跳處理函數(shù)
概括如下:
ping_outstanding 在下述函數(shù)中處理,該函數(shù)的調(diào)用是在接收線程中,如果收到云端的 PINGRESP 數(shù)據(jù)包,會調(diào)用該接口
lastSent 是MQTT消息包發(fā)送完成,調(diào)用的場景如下2個:
MQTTPacket_Factory(...)
如果收到一個MQTT packet,則設(shè)置 lastReceived
以上就是關(guān)于tcp心跳機(jī)制相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
scratch怎么復(fù)制(scratch怎么復(fù)制代碼)
itchat無法登錄(無法用itchat登錄網(wǎng)頁微信)
鄒平公園景觀設(shè)計施工(鄒平公園景觀設(shè)計施工招標(biāo))
汕頭恩平別墅景觀設(shè)計(汕頭恩平別墅景觀設(shè)計圖)