在 HTTP 或 HTTPS 中,是否有一种情况,服务器向客户端发送 HTTP 响应,客户端收到完整的响应,但服务器无法确定客户端是否收到完整的响应,例如,如果服务器未收到来自客户端的最终 ACK 或 FIN 消息?
如果是这样,在什么条件下可能会发生这种情况?
我浏览了几个 RFC 并用谷歌搜索,但找不到任何相关答案。
让我们问稍微不同的问题:
Q1:服务器是否可以判断其响应已成功发送?
答:是的。
Q2:服务器是否有可能检测到发送响应时发生的错误?
答:是的。
Q3:如果在客户端完全接收到消息之前 TCP/IP 连接异常终止,会发生什么情况?
A:客户端和服务器都获得 RST。
对于两个不同级别中的一个/两个,问题 1 和问题 2 的答案都是“是”:
TCP/IP 连接级别:连接正常关闭...或不正常关闭。
HTTP“持久连接”(RFC 2616):提供额外的应用程序层错误报告功能。