7

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

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

问题:

  • 为什么 1999 年的标准说这实际上是不可能的?那时 TCP 已经很好地建立起来,并且到那时已经支持了很长一段时间的半关闭(可能从 1974 年就一直支持?)。

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

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

4

1 回答 1

3

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

于 2012-12-29T06:08:28.027 回答