Что такое HTTP/3

Giteqa

HTTP/3 - это следующий протокол для сетевого взаимодействия через Интернет, который призван частично заменить HTTP/1 и HTTP/2. За месяц до следующего заседания Рабочей группы QUIC, которое состоится в Цюрихе в феврале следующего года, может быть полезно подвести итоги того, что обещает HTTP/3 и как выглядит его текущая поддержка клиент/сервер.

HTTP/3 обещает сделать Интернет-соединения быстрее, надежнее и безопаснее. Рожденный как "HTTP поверх QUIC", попытка адаптировать протокол HTTP для работы поверх собственного протокола транспортного уровня Google, QUIC, позже он был предложен в качестве стандарта IETF и в настоящее время является Интернет-проектом. В октябре 2018 года сопредседатель рабочих групп IETF HTTP и QUIC Марк Ноттингем предложил переименовать HTTP over QUIC в HTTP/3, чтобы прояснить его истинную природу и его независимость от QUIC.

Что такое QUIC

QUIC является ключевым элементом HTTP/3, поскольку он обеспечивает основу для его основных функций. Построенный на основе UDP, QUIC пытается решить основные проблемы, возникающие при использовании протокола TCP, например, задержку установления соединения и многопотоковую обработку при потере пакетов. Проблема задержки TCP проистекает из требований его алгоритма управления перегрузкой, который требует медленного запуска для оценки объема трафика, который может быть отправлен, до возникновения перегрузки. В HTTP/1.0 это усугубляется тем фактом, что каждому обмену запрос/ответ TCP назначается новое соединение, что влечет за собой штраф за медленный запуск.

С тех пор попытка обойти медленный запуск TCP лежит в основе последовательных усилий по улучшению протокола HTTP.

HTTP/1.1 представил "поддерживающие" соединения, позволяющие упорядочивать множественные обмены запрос-ответ по одному и тому же TCP-соединению, таким образом не требуя новой фазы установления соединения для каждого запроса. Однако поддерживающие соединения HTTP/1.1 не поддерживают одновременную отправку нескольких запросов, что снова привело к возникновению узких мест из-за растущей сложности веб-страниц.

Об HTTP/2

HTTP/2, производный от ныне устаревшего протокола SPDY, представил концепцию первоклассных потоков, встроенных в одно и то же соединение. Это позволило мультиплексировать одновременные обмены запросами и ответами, но с серьезным недостатком: когда потери пакетов увеличиваются, производительность HTTP/2 ухудшается из-за того, как TCP обрабатывает повторную передачу пакетов (блокировка HOL). Воздействие может быть большим, поскольку все потоки используют одно и то же соединение. Когда потеря пакетов превышает заданный порог, как это ни парадоксально, несколько соединений HTTP/1 работают более эффективно, чем HTTP/2.

Как уже упоминалось, QUIC имеет первоклассные потоки, которые решают проблему задержки при медленном запуске соединения, как это происходит в HTTP/2. Кроме того, он обрабатывает их отдельно друг от друга, что решает проблемы производительности из-за потери пакетов. Использование QUIC в качестве протокола транспортного уровня - это самый большой шаг вперед HTTP/3 по сравнению с HTTP/2. Поскольку QUIC изначально реализует ряд функций, связанных с управлением потоками, которые были неотъемлемой частью спецификации HTTP/2, их можно было удалить из HTTP/3. Кроме того, внедрение QUIC потребовалось для создания новой схемы сжатия заголовков HTTP, QPACK, поскольку сжатие заголовков HTTP/2 HPACK сильно зависит от порядка, в котором TCP доставляет пакеты на конечные точки.

В течение нескольких лет Google использует QUIC для своих собственных сервисов, включая поиск, YouTube и другие, а также поддерживает его в Chrome. Некоторое время Chrome был единственным способом использовать QUIC при взаимодействии с поддерживающими его сервисами Google. Недавно Mozilla добавила поддержку HTTP/3 и в Firefox 72, но все еще экспериментально. Инструмент командной строки curl также добавил поддержку HTTP/3 в версии 7.66.0, а также множество дополнительных функций. На стороне сервера HTTP/3 поддерживается LiteSpeed и Nginx.

Cloudflare и HTTP/3

Что касается облачных технологий, то, помимо Google, Cloudflare несколько месяцев назад объявила о предварительном включении HTTP/3 для части своих клиентов. Cloudflare также является компанией, стоящей за Quiche, библиотекой Rust с открытым исходным кодом, позволяющей реализовать клиенты и серверы HTTP/3.

Как уже упоминалось, HTTP/3 все еще определяется IETF, и официальная дата выпуска еще не установлена. Между тем, распространение HTTP/3 растет во всем мире, и его используют почти 300 000 сервисов по всему миру. Google по-прежнему является ведущей организацией, внедряющей HTTP/3, но несколько других берут на себя незначительную долю. InfoQ продолжит своевременно сообщать о HTTP/3, чтобы наша аудитория была в курсе эволюции Интернета.