HTTP客户端如何检测Web服务器崩溃

时间:2014-12-10 21:34:48

标签: http tcp

来自HTTP:The definitive guide

  

但没有Content-Length,客户无法区分   成功连接在消息和连接结束时关闭   由于服务器在邮件中间崩溃而关闭。

让我们假设为此目的,服务器崩溃"意味着服务器的硬件或操作系统崩溃而不关闭TCP连接或可能链接被破坏。

如果Web服务器在没有关闭TCP连接的情况下崩溃,客户端如何检测到连接已经关闭"?

据我所知,如果没有发送FIN段,客户端将继续等待数据,除非有定时器或它尝试发送一些数据(失败,检测TCP连接关闭)。

这是如何在HTTP中完成的?

1 个答案:

答案 0 :(得分:0)

  

如果Web服务器在没有关闭TCP连接的情况下崩溃,客户端如何检测到连接已经关闭"?

由于关闭将由内核完成,这意味着整个系统崩溃或连接在其他地方破坏(路由器崩溃,服务器端的电源中断或类似情况)。

如果您将数据发送到服务器并且没有得到任何有用的回复,则只能检测到这一点。

  

据我所知,如果没有发送FIN段,客户端将继续等待数据,除非有定时器或它尝试发送一些数据(失败,检测TCP连接关闭)。

     

这是如何在HTTP中完成的?

HTTP使用TCP作为底层协议,因此如果TCP检测到连接,则HTTP也会关闭。此外,在大多数情况下,HTTP可以通过使用来自Content-length头的信息或具有分块传输编码的类似信息来检测响应是否完成。在少数情况下,响应结束仅由连接指示关闭HTTP只能依靠TCP来检测问题。到目前为止理论,但在实践中,大多数浏览器只是忽略不完整的响应,并显示尽可能多的。