但没有Content-Length,客户无法区分 成功连接在消息和连接结束时关闭 由于服务器在邮件中间崩溃而关闭。
让我们假设为此目的,服务器崩溃"意味着服务器的硬件或操作系统崩溃而不关闭TCP连接或可能链接被破坏。
如果Web服务器在没有关闭TCP连接的情况下崩溃,客户端如何检测到连接已经关闭"?
据我所知,如果没有发送FIN段,客户端将继续等待数据,除非有定时器或它尝试发送一些数据(失败,检测TCP连接关闭)。
这是如何在HTTP中完成的?
答案 0 :(得分:0)
如果Web服务器在没有关闭TCP连接的情况下崩溃,客户端如何检测到连接已经关闭"?
由于关闭将由内核完成,这意味着整个系统崩溃或连接在其他地方破坏(路由器崩溃,服务器端的电源中断或类似情况)。
如果您将数据发送到服务器并且没有得到任何有用的回复,则只能检测到这一点。
据我所知,如果没有发送FIN段,客户端将继续等待数据,除非有定时器或它尝试发送一些数据(失败,检测TCP连接关闭)。
这是如何在HTTP中完成的?
HTTP使用TCP作为底层协议,因此如果TCP检测到连接,则HTTP也会关闭。此外,在大多数情况下,HTTP可以通过使用来自Content-length头的信息或具有分块传输编码的类似信息来检测响应是否完成。在少数情况下,响应结束仅由连接指示关闭HTTP只能依靠TCP来检测问题。到目前为止理论,但在实践中,大多数浏览器只是忽略不完整的响应,并显示尽可能多的。