TCP如何保持長連接,並識別不同請求的?

王龍森

”我是喲喲吼說科技,專注於數據網絡的回答,歡迎大家與我交流數據網絡的問題“

TCP連接分為長連接和短連接,在客戶端與服務器端通過TCP協議三次握手機制建立連接,若為短連接,那麼在數據包發送完之後就會自己斷開;若為長連接,那麼在數據包發送完畢後,在一定時間內會保持連接,就是我們說的keepalive功能。

下面喲喲來詳細介紹一下TCP是如何保持長連接的:

1、應用層的心跳機制

通過應用程序自身發送心跳包去檢測連接是否正常,基本方法就是在服務器端設置一個Timer事件,在一定時間段內向客戶端一個心跳數據包,若在一定時間內沒有收到客戶端的回應,那麼就會認為客戶端掉線;同樣客戶端在一定時間段內沒有收到服務器的心跳包,則判斷與服務器端連接斷開。

2、TCP的keepalive機制

其實跟心跳機制大同小異,無論是客戶端還是服務器端,只要有一方開啟Keepalive功能後,就會在特定的時間段內發送心跳包,對端在收到心跳包後進行回覆,表示自己在線。默認的Keepalive超時時間為2小時,探測次數為5次,但超時時間可以手動設置成合理的時間段。

TCP是如何識別不同請求的呢?

當每個連接建立後,都會保存唯一的套接字,其中包含對端的IP地址、端口號等信息,這樣通過這個套接字就會識別出來各種不同的請求,就可以向指定的對端發送信息了。


分享到:


相關文章: