提问者:小点点

FIN pkt与HTTP连接一段时间后


打开2TCP连接:1.正常连接(同时实现回显服务器,客户端)

在运行apache作为服务器时使用curl(修改)实用程序打开HTTP连接,其中curl在连接建立后的一段时间内不发送GET请求。对于连接建立后的正常连接,服务器正在等待来自客户端的请求。但据观察,奇怪的是,在连接建立后的HTTP连接中,如果GET请求不是来自客户端(一段时间),服务器正在向客户端发送FIN pkt


共1个答案

匿名用户

Apache得到了一个名为Timeout的参数。

它的手册页面(Apache Core-超时指令)指出:

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

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

我想你掉进了一号案件

编辑

我潜伏到W3HTTP文档,我发现没有提到超时。

但是在第8章(联系)中,我发现:

8.1.4实际考虑

服务器通常会有一些超时值,超过该值它们将不再保持非活动连接。(…)使用持久连接对客户端或服务器的超时长度(或存在)没有要求。

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