Предоставляет ли HTTP/1.1 возможность ограничивать конец запроса, закрывая соединение?

[RFC2616 part 4.4](https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.4) specifies how the end of the message is determined in HTTP/1.1. Item 5 in that section specifies that the server may close the connection to indicate the response is finished.

В нем также говорится, что ограничение такого запроса невозможно. Тем не менее, TCP позволяет клиенту закрыть его конец и продолжить получать ответ. Я даже проверил это; оно работает.

Вопросов:

* Почему стандарт 1999 года говорит, что это невозможно, когда это действительно возможно? TCP был хорошо установлен к тому времени и к тому времени поддерживал половину закрытия (возможно, с 1974 года).
* Является ли это нарушением протокола для клиента, чтобы закрыть соединение, чтобы указать конец запроса?

Пожалуйста, не обращайте внимания на то, является ли это хорошей идеей: я знаю, как вы иногда не можете точно сказать, было ли соединение закрыто специально или просто сломалось, и как это имеет смысл, чтобы открыть соединение для повторного использования позже.

Он не говорит, что полузакрытие невозможно. Он просто говорит, что «закрытие соединения не может использоваться для обозначения конца тела запроса», что верно. Он просто не рассматривает возможность полузакрытия так или иначе. Поскольку это не упоминается в RFC, я бы сказал, что использование этого будет нарушением протокола, и у вас не должно быть оснований ожидать, что серверы будут реагировать соответственно: например, сервер будет иметь право просто забыть запрос и закройте соединение при получении FIN.