打开2个TCP连接: 1.正常连接(实现echo服务器,客户端时)& 2. HTTP连接
在运行apache作为服务器时,使用curl(已修改)实用程序打开HTTP连接,其中curl在连接建立后的一段时间内未发送GET请求。 对于连接建立后的正常连接,服务器正在等待来自客户端的请求。 但正如观察到的那样,在连接建立后奇怪地在HTTP连接中,如果GET请求不是来自客户端(一段时间),服务器正在向客户端发送FIN pkt&关闭他的连接部分。 HTTP客户端是在初始连接后立即发送GET请求的必备条件。
答案 0 :(得分:0)
Apache有一个名为Timeout的参数。
其手册页(Apache Core - Timeout Directive)声明:
TimeOut指令定义Apache在各种情况下等待I / O的时间长度:
- 从客户端读取数据时,等待的时间长度 如果读缓冲区为空,则TCP数据包到达。
- 将数据写入客户端时,等待的时间长度 如果发送缓冲区已满,则确认数据包。
- 在mod_cgi中,等待CGI脚本输出的时间长度。
- 在mod_ext_filter中,等待输出的时间长度 过滤过程。
- 在mod_proxy中,如果不是ProxyTimeout,则为默认超时值 配置。
醇>
我认为你遇到了 NUMBER ONE
修改强>
我潜伏在W3 HTTP文档中,我发现没有提及超时。
但是在第8章(连接)中我找到了:
8.1.4 Practical Considerations
服务器通常会有一些超时值,超出这些值后,它们将不再维持非活动连接。 (...)持久连接的使用对客户端或服务器的超时(或存在)没有要求。
这听起来像“每个服务器或客户端都可以自由选择关于非活动连接超时的行为”