HTTP / 1.1是否允许通过半关闭连接来分隔请求结束?

Rom*_*kov 5 tcp http half-close

RFC2616第4.4部分指定如何在HTTP / 1.1中确定消息的结尾。该部分中的项目5指定服务器可以关闭连接以指示响应已完成。

还继续说,这样分隔请求是不可能的。但是,TCP允许客户端关闭其末端并继续接收响应。我什至已经测试过;有用。

问题:

  • 为什么在1999年的标准中说这是不可能的呢?TCP到那时已经很成熟,并且到那时已经很长时间支持半封闭(可能是从1974年以来一直如此)。

  • 客户端半关闭连接以指示请求结束是否违反了协议?

请忽略这是否是一个好主意:我知道您有时无法完全确定连接是故意关闭还是刚刚断开,以及保持连接打开以供以后重用的意义更大。

use*_*421 3

这并不是说半关闭是不可能的。它只是说“关闭连接不能用于指示请求正文的结束”,这是正确的。它根本没有考虑以一种或另一种方式半关闭的可能性。由于 RFC 中没有提及,我想说使用它会违反协议,并且您没有理由期望服务器做出相应的反应:例如,服务器有权忘记请求并收到 FIN 后关闭连接。