TCP連線分為長連線和短連線,在客戶端與伺服器端透過TCP協議三次握手機制建立連線,若為短連線,那麼在資料包傳送完之後就會自己斷開;若為長連線,那麼在資料包傳送完畢後,在一定時間內會保持連線,就是我們說的keepalive功能。
下面喲喲來詳細介紹一下TCP是如何保持長連線的:
透過應用程式自身傳送心跳包去檢測連線是否正常,基本方法就是在伺服器端設定一個Timer事件,在一定時間段內向客戶端一個心跳資料包,若在一定時間內沒有收到客戶端的迴應,那麼就會認為客戶端掉線;同樣客戶端在一定時間段內沒有收到伺服器的心跳包,則判斷與伺服器端連線斷開。
其實跟心跳機制大同小異,無論是客戶端還是伺服器端,只要有一方開啟Keepalive功能後,就會在特定的時間段內傳送心跳包,對端在收到心跳包後進行回覆,表示自己線上。預設的Keepalive超時時間為2小時,探測次數為5次,但超時時間可以手動設定成合理的時間段。
TCP是如何識別不同請求的呢?
當每個連線建立後,都會儲存唯一的套接字,其中包含對端的IP地址、埠號等資訊,這樣透過這個套接字就會識別出來各種不同的請求,就可以向指定的對端傳送資訊了。
TCP連線分為長連線和短連線,在客戶端與伺服器端透過TCP協議三次握手機制建立連線,若為短連線,那麼在資料包傳送完之後就會自己斷開;若為長連線,那麼在資料包傳送完畢後,在一定時間內會保持連線,就是我們說的keepalive功能。
下面喲喲來詳細介紹一下TCP是如何保持長連線的:
1、應用層的心跳機制透過應用程式自身傳送心跳包去檢測連線是否正常,基本方法就是在伺服器端設定一個Timer事件,在一定時間段內向客戶端一個心跳資料包,若在一定時間內沒有收到客戶端的迴應,那麼就會認為客戶端掉線;同樣客戶端在一定時間段內沒有收到伺服器的心跳包,則判斷與伺服器端連線斷開。
2、TCP的keepalive機制其實跟心跳機制大同小異,無論是客戶端還是伺服器端,只要有一方開啟Keepalive功能後,就會在特定的時間段內傳送心跳包,對端在收到心跳包後進行回覆,表示自己線上。預設的Keepalive超時時間為2小時,探測次數為5次,但超時時間可以手動設定成合理的時間段。
TCP是如何識別不同請求的呢?
當每個連線建立後,都會儲存唯一的套接字,其中包含對端的IP地址、埠號等資訊,這樣透過這個套接字就會識別出來各種不同的請求,就可以向指定的對端傳送資訊了。