1. 程式人生 > >HTTTP及TCP的超時以及KEEP-ALIVE機制小結

HTTTP及TCP的超時以及KEEP-ALIVE機制小結

詳解 int 客戶 博客 abc key html htttp cee

一、HTTP的超時和Keep Alive

HTTP Keepalive 機制是http 1.1中增加的一個功能。

在HTTP 1.0中,客戶端每發起一個http 請求,等收到接收方的應答之後就斷開TCP。下一個請求再需要發送時,要重新建立TCP連接。

在HTTP 1.1中,客戶端每發起一個http請求之後,服務器可以通過keep alive的方式告知客戶端,同時保持之前建立的TCP連接。下一個http請求和應答從而能夠避免再次建連,通過已有連接繼續發送。

HTTP層的超時設置實例代碼如下,setConnectionTimeout設置建連的超時時間,setTimeout設置收到應答的超時時間:

httpClient client = new HttpClient();client.setConnectionTimeout(30000); client.setTimeout(30000);

HttpClient 4.3超時設置 - Docee

HTTP Keep-Alive詳解[轉] - huangfox - 博客園

二、TCP的超時和Keep alive的機制

TCP的數據包如果在一個RTO沒有收到應答則進行重傳,RTO的值由TCP傳輸過程中測量的RTT以及最小RTO決定。

如果一個TCP連接長期沒有數據傳輸,TCP可以通過Keep alive機制來控制和斷開連接。

tcp的keepalive的三個配置參數包括:

tcp_keepalive_time:鏈路空閑時間達到tcp_keepalive_time之後開始發送包括數據包

tcp_keepalive_probes:發了保活包數目達到tcp_keepalive_probes斷開連接

tcp_keepalive_intvl:保活數據包的發送間隔

開啟tcp keepalive需要通過應用層序開啟socket的keepalive功能。而keepalive的三個參數既可以通過系統命令sysctl進行設置,也可以通過設置socket屬性進行設置。

為什麽基於TCP的應用需要心跳包(TCP keep-alive原理分析) | Hengyunabc Blog

HTTTP及TCP的超時以及KEEP-ALIVE機制小結