RFC2616 part 4.4指定如何在HTTP / 1.1中确定消息的结尾。该部分中的第5项指定服务器可以关闭连接以指示响应已完成。
它还继续说像这样划定请求是不可能的。但是,TCP允许客户端关闭其结束并继续接收响应。我甚至测试过它;它有效。
问题:
为什么1999年的标准说这在实际可能的情况下是不可能的?那时TCP已经很好地建立起来了,到那时已经支持了半封闭很长一段时间(可能自1974年以来一直都是这样)。
客户端半关闭连接以指示请求结束是否违反协议?
请忽略这是否是一个好主意:我知道你有时无法确定连接是故意关闭还是刚刚破坏,以及如何保持连接开放以便重用更有意义它以后。
答案 0 :(得分:3)
并不是说半关闭是不可能的。它只是说'关闭连接不能用于指示请求体的结束',这是真的。它根本不考虑半途关闭的可能性。因为在RFC中没有提到,我会说使用它会违反协议,你应该没有理由期望服务器做出相应的反应:例如,服务器有权忘记请求和收到FIN时关闭连接。