一段时间后,使用HTTP连接FIN pkt

时间:2013-01-23 05:11:01

标签: apache http networking tcp client-server

打开2个TCP连接: 1.正常连接(实现echo服务器,客户端时)& 2. HTTP连接

在运行apache作为服务器时,使用curl(已修改)实用程序打开HTTP连接,其中curl在连接建立后的一段时间内未发送GET请求。 对于连接建立后的正常连接,服务器正在等待来自客户端的请求。 但正如观察到的那样,在连接建立后奇怪地在HTTP连接中,如果GET请求不是来自客户端(一段时间),服务器正在向客户端发送FIN pkt&关闭他的连接部分。 HTTP客户端是在初始连接后立即发送GET请求的必备条件。

1 个答案:

答案 0 :(得分:0)

Apache有一个名为Timeout的参数。

其手册页(Apache Core - Timeout Directive)声明:

  

TimeOut指令定义Apache在各种情况下等待I / O的时间长度:

     
      
  1. 从客户端读取数据时,等待的时间长度   如果读缓冲区为空,则TCP数据包到达。
  2.   
  3. 将数据写入客户端时,等待的时间长度   如果发送缓冲区已满,则确认数据包。
  4.   
  5. 在mod_cgi中,等待CGI脚本输出的时间长度。
  6.   
  7. 在mod_ext_filter中,等待输出的时间长度   过滤过程。
  8.   
  9. 在mod_proxy中,如果不是ProxyTimeout,则为默认超时值   配置。
  10.   

我认为你遇到了 NUMBER ONE

修改

我潜伏在W3 HTTP文档中,我发现没有提及超时。

但是在第8章(连接)中我找到了:

8.1.4 Practical Considerations

服务器通常会有一些超时值,超出这些值后,它们将不再维持非活动连接。 (...)持久连接的使用对客户端或服务器的超时(或存在)没有要求。

这听起来像“每个服务器或客户端都可以自由选择关于非活动连接超时的行为”