Кратко

  • Mark Nottingham предложил название «HTTP/3», чтобы обозначить HTTP как семантику, работающую поверх QUIC, и не смешивать эту привязку с транспортом QUIC.
  • Одновременно он предложил после публикации передать поддержку HTTP/3 и QPACK рабочей группе HTTP. Позднейшие уставы IETF фиксируют такое распределение.
  • Эта граница проясняет, кто принимает решения и поддерживает документы. Она не гарантирует совместимость или внедрение и не делает Nottingham единоличным автором решения.

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

28 октября Mark Nottingham написал в список рассылки рабочей группы QUIC. Он предложил назвать документ HTTP «HTTP/3» и использовать h3 как окончательный идентификатор ALPN. По его замыслу, название показывало бы еще один способ связать семантику HTTP с протоколом на проводе, как это произошло с HTTP/2, и помогало бы отличать такую привязку от транспорта QUIC. Первичное обоснование сохранилось в его письме.

Предложение касалось и того, кто будет поддерживать спецификацию. После публикации, писал Nottingham, сопровождение HTTP/3 и QPACK следует передать рабочей группе HTTP. Документ может появиться в группе, которая разрабатывает транспорт, но это не значит, что она должна принимать все будущие решения о прикладном протоколе. Группа QUIC могла создать исходную привязку, а сообщество HTTP — заниматься последующим развитием HTTP. Название отвечало на вопрос «что именно описано», передача поддержки — «кто отвечает дальше».

На встрече разделили поддержку и право решать

На IETF 103 группа QUIC обсуждала название. В протоколе отражены разные мнения: кто-то воспринимал HTTP/3 как преемника HTTP/2, а кто-то опасался, что новое название подразумевает ответвление. Nottingham напомнил, что HTTP/2 не отменял и не заменял HTTP/1.1. Важнее было отделить семантику от протокола, который переносит ее по сети.

Протокол не фиксирует формальное голосование. В нем записан неофициальный «гул» участников: примерно 70 к 30 в поддержку нового имени и почти единогласное согласие, что решение должен принять HTTPbis. Второй вывод лучше показывает границу полномочий. Работа появилась в группе QUIC, но имя версии HTTP должна определить группа HTTP. Nottingham прямо сказал, что именование HTTP должно оставаться делом HTTP-сообщества.

В октябрьском письме стояла пометка «Chair hat». Nottingham просил ограничить дискуссию в Бангкоке, чтобы обсуждение названий не отнимало время у технической работы. Разработчикам и пользователям требовалось понятное описание, но у группы были и другие задачи. Председатель мог определить рамки вопроса и распорядок встречи, но не мог заменить консенсус собственным решением.

Название точно работает, когда слои остаются видны

Опубликованная спецификация сохраняет различие. RFC 9114 определяет HTTP/3 как отображение семантики HTTP на QUIC. RFC 9110 задает семантику HTTP, а RFC 9000 описывает транспорт QUIC. HTTP/3 использует надежную, упорядоченную доставку данных по потокам QUIC и его свойства безопасности, сохраняя смысл HTTP-сообщений и их роль на уровне приложения. Название обозначает связку протоколов, а не слияние слоев.

Идентификатор ALPN h3 — не просто другое написание публичного имени HTTP/3. Это обозначение, которое используется на проводе при согласовании протокола. «HTTP/3» помогает классифицировать спецификацию и работу; h3 нужен двум сторонам для выбора протокола. Nottingham писал, что название не будет формализовано и использовано на проводе до публикации. Значит, группа могла пересмотреть предложение до того, как идентификатор повлиял бы на ожидания совместимости.

Передача поддержки тоже была закреплена в документах управления. Устав HTTPbis 2018 года предусматривал, что после публикации QUIC-группой HTTP/3 группа HTTPbis будет поддерживать его и разрабатывать расширения по мере необходимости, включая QPACK. Действующий устав HTTP включает HTTP/3 и QPACK в основные спецификации HTTP. Текущий устав QUIC говорит, что QUIC-группа создала эту привязку и QPACK, но теперь их сопровождает группа HTTP.

Граница не превращает группы в изолированные острова. В списке QUIC по-прежнему есть работа над событиями qlog для HTTP/3, где пересекаются наблюдаемость транспорта и приложения. Точнее говорить о главной ответственности: группа HTTP поддерживает HTTP-привязку и ее расширения, а группа QUIC продолжает заниматься механизмами транспорта. Поскольку в работающих системах слои взаимодействуют, сотрудничество остается необходимым.

Публикация не заменяет внедрение

Название HTTP/3 само по себе не заставляет клиент предлагать этот протокол, сервер — принимать его, а сеть — передавать его без ошибок. Публикация RFC и идентификатор ALPN дают общую точку отсчета. Реализациям еще предстоит согласовать протокол, проверить совместимость, предусмотреть откат и решить, внедрять ли его. Имя уменьшает путаницу в категориях, но не показывает распространенность или производительность.

Это ограничение одновременно определяет ценность предложения. Общая спецификация задает смысл сообщений HTTP и их привязку к QUIC. Транспортный документ может описывать доставку, управление перегрузкой и безопасность транспорта. Уставы назначают постоянных сопровождающих. Затем операторы и разработчики решают, использовать ли спецификации и каким образом. Каждая запись отвечает на отдельный вопрос.

Вклад Nottingham заключался не в том, что он один придумал HTTP/3 или лично передал его на поддержку другой группе. Он связал публичное имя с будущей ответственностью и настаивал, что имя должна определить группа HTTP. Протокол встречи и уставы показывают, как эти вопросы рассматривались. Для новой спецификации полезно спросить: понятно ли читателю, что осталось общим, что изменилось, кто поддерживает каждую часть и что еще должны подтвердить реализации?

Источники