Является ли RFC 7231 последней версией протокола HTTP / 1.1?

Я занимаюсь университетской работой по HTTP и пытаюсь объяснить, что происходит, когда существует HTTP-соединение между клиент и сервер. Для этого я использую команду «curl -v -i» в терминале Ubuntu, которая показывает заголовки HTTP-соединения. В этом случае соединение с сервером осуществляется с помощью версии HTTP / 1.1.

Я хочу использовать самые последние источники. Во-первых, я ссылался на документ RFC2616, но в этом блоге ( https://www.mnot.net/blog/2014/06/07/rfc2616_is_dead ) говорится, что самый современный документ RFC 7231. Мои вопросы: это правда? Все ли соединения HTTP / 1.1 используют спецификации RFC 7231? Возможно ли, что RFC 7231 уже заменен на более современный?

Большое спасибо.

0
задан 17 August 2019 в 18:34
3 ответа

HTTP/1.1 официально описан в 6 RFC:

  1. RFC 7230, HTTP/1.1: Маршрутизация синтаксиса сообщений
  2. RFC 7231, HTTP/1.1: Семантика и содержание
  3. RFC 7232, HTTP/1.1: Условные запросы
  4. RFC 7233, HTTP/1.1: Запрос диапазона
  5. RFC 7234, HTTP/1.1: Кэширование
  6. RFC 7235, HTTP/1.1: Аутентификация

Однако для большинства из них существуют ошибки.

Эти RFC в настоящее время также пересматриваются Рабочей группой HTTP из IETF, и ожидается, что они будут формализованы как RFC "в ближайшее время", что, предположительно, "устареет" для этих 6.

И, конечно, есть HTTP/2 RFC, но проигнорируйте это, так как вы конкретно говорите о HTTP/1.1, и оба HTTP/1.1 и HTTP/2 имеют одну и ту же семантику. В этой связи HTTP/3 также должен быть опубликован "скоро".

Кроме того, существует множество RFC, которые расширяют HTTP дополнительными заголовками и т.п.

И, как показал другой ответ, многие серверы не следуют спецификации именно из-за ошибок или даже потому, что исполнитель специально решил этого не делать. HTTP - это богатый, большой и сложный протокол, и Веб всегда был довольно прощающим по сравнению с некоторыми областями вычислений, где отсутствующая или неправильная полуколонна может остановить всю программу. Существует даже известная сентенция под названием Postel's Law, которая гласит: "Будьте консервативны в том, что вы делаете, будьте либеральны в том, что принимаете от других". Так много реализаций принимают сообщения, что строгое прочтение спецификации не позволит. Хотя в этой связи следует отметить, что в ИЭПП есть другой проект RFC, в котором утверждается, что Закон Постеля (он же "Принцип надежности") вреден.

.
1
ответ дан 4 December 2019 в 13:19

Должно быть, так как не показывает, что он был обновлен другой RFC, как в примере ниже для RFC 2821.

enter image description here

В то время как RFC 7231 не показывает такой Обновленный по:

enter image description here

1
ответ дан 4 December 2019 в 13:19

То, что появился новый RFC, не означает, что клиенты и серверы были обновлены для реализации новых/измененных вещей. Даже со старым RFC или с одним RFC для чего-то, клиенты и серверы могут не полностью реализовать его или реализовать его со своими собственными расширениями.

Я бы порекомендовал либо точно придерживаться RFC и делать все это в блок-схемах/диаграммах/UML, psuedocode, и т.д., либо определить, как он на самом деле реализован в некоторых из более популярных серверов и клиентов. Так как они являются Open Source, то исходный код является окончательным ответом на ваш вопрос.

Надеюсь, что исходный текст хорошо прокомментирован не только в отношении того, что делается, но и в отношении того, почему это делается (т.е. к какой части RFC он применим), но это моя типичная мечта.

.
0
ответ дан 4 December 2019 в 13:19

Теги

Похожие вопросы