首页 > 代码库 > HTTTP及TCP的超时以及KEEP-ALIVE机制小结

HTTTP及TCP的超时以及KEEP-ALIVE机制小结

一、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机制小结