2014-12-10 97 views
0

HTTP:The definitive guide如何HTTP客户端检测到Web服务器崩溃

但是,如果没有内容长度,客户端不能 连接成功之间密切的消息,并连接 接近年底由于服务器崩溃区分消息的中间。

我们假设为此目的,“服务器崩溃”意味着服务器的硬件或操作系统崩溃,而不关闭TCP连接或可能的链接中断。

如果Web服务器崩溃而没有关闭TCP连接,客户端如何检测连接“已关闭”?

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

这是如何在HTTP中完成的?

回答

0

如果Web服务器崩溃而未关闭TCP连接,客户端如何检测连接“已关闭”?由于关闭将由内核完成,这将意味着整个系统崩溃或连接在其他地方断开(路由器崩溃,服务器端电源中断或类似情况)。

如果您将数据发送到服务器并且没有收到任何有用的响应,您只能检测到此情况。我知道,如果没有发送FIN段,客户端将一直等待数据,除非有一个定时器或它试图发送一些数据(失败时检测到TCP连接关闭)。

这是如何在HTTP中完成的?

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

相关问题