Чем отличаются HTTP2-настройки и предисловие к соединению

Из протокола HTTP/2

Содержимое поля заголовка HTTP2-Settings представляет собой полезную нагрузку кадра SETTINGS (раздел 6.5).

а также

После получения ответа 101 клиент ДОЛЖЕН отправить предисловие к соединению (раздел 3.5), которое включает в себя кадр SETTINGS.

Мой вопрос заключается в том, почему клиент отправляет кадр SETTINGS дважды на сервер? Благодарю.

1 ответ

HTTP/2 придает большое значение обмену SETTINGS прежде всего, поэтому у меня сложилось впечатление, что HTTP2-Settings служит для информирования сервера об условиях клиента, прежде чем сервер даже согласится переключиться на HTTP/2.

Второй фрейм SETTINGS, вероятно, предназначен для единообразия, поэтому после завершения обновления с HTTP/1.1 будет проведен унифицированный сеанс HTTP/2, начинающийся с SETTINGS, такой же, как при использовании протокола TLS+ALPN или обычного HTTP/2 с предыдущим знанием., В спецификации не сказано, какие настройки должны быть в любом из кадров, AFAICT, поэтому один из них может быть пустым (что фактически указано в спецификации, раздел 3.5).

Эта избыточность является небольшой платой: 9 байт на соединение по сравнению с трудностями, которые могут возникнуть из-за наличия немного отличающихся реализаций HTTP/2 для случаев, когда есть обновление с HTTP/1.1, по сравнению со случаями, когда нет,

Обратите внимание, что хотя некоторые инструменты фактически используют HTTP/2 поверх простых соединений, действительно интересные случаи, например, браузеры, всегда будут использовать TLS+ALPN.

Другие вопросы по тегам