3.7. Сравнение HTTP, HTTP/2, HTTP/3
Сравним HTTP, HTTP/2 и HTTP/3.
HTTP и HTTP/2 работают поверх TCP. HTTP/3 работает поверх QUIC, который в свою очередь работает поверх UDP. Это означает, что при ошибке отправки пакетов при HTTP и HTTP/2 будет запрашиваться повторная отправка, а в HTTP/3 — нет.
С точки зрения синтаксиса и семантической структуры HTTP/3 похож на HTTP/2. HTTP/3 участвует в тех же типах обмена сообщениями запроса/ответа с форматом данных, которые содержат методы, заголовки, коды состояния и тело.
Сходства между HTTP/2 и HTTP/3
- Server Push.
- Мультиплексирование, которое осуществляется через одно соединение через потоки.
- Приоритизация ресурсов выполняется на основе потоков.
- Сжатие заголовков как HPACK и QPACK, которые привязаны к порядку пакетов.
Различия между HTTP/2 и HTTP/3
Основное отличие состоит в том, что HTTP/3 основан на QUIC как транспортном уровне для обработки потоков. HTTP/2 использует TCP для обработки потоков на уровне HTTP:

HTTP/3 обеспечивает гораздо более быстрое «рукопожатие» для установления безопасного сеанса по сравнению с HTTP/2, в котором это достигается с помощью TCP и TLS. HTTP/3 может быть реализован только безопасным и зашифрованным способом, тогда как HTTP/2 может быть реализована без HTTPS.
Модели доставки
HTTP передаёт данные в виде текстовых сообщений, конвейерной обработки и блокировки очереди. HTTP/2 кодирует в двоичный файл и приоритизирует потоки. Двоичный уровень кадрирования кодирует запросы и ответы и разбивает их на более мелкие пакеты информации.
Прогнозирование запросов ресурсов
- HTTP — встраивание в документ HTML.
- HTTP/2 — механизм Server Push.
- HTTP/3 — механизм Server Push.
Переполнение буфера
- HTTP использует транспортный уровень, чтобы избежать переполнения буфера. Каждое новое TCP-соединение требует отдельного механизма управления потоком.
- HTTP/2 мультиплексирует потоки данных в одном TCP-соединении, поэтому клиент и сервер управляют потоками сами.
- HTTP/3 мультиплексирует потоки данных в одном TCP-соединении, поэтому клиент и сервер управляют потоками сами.
Сжатие
- HTTP gzip, но заголовки не сжимаются.
- HTTP/2 сжатие HPACK, которое уменьшает размер заголовков.
- HTTP/3 сжатие QPACK и HPACK, которое уменьшает размер заголовков.
Итоги
Во всех протоколах версии HTTP последовательно применяются методы запроса, коды состояния и поля сообщений. Различия заключаются в отображении нижележащих транспортных уровней.
Для HTTP/1.1 и HTTP/2 TCP является транспортным средством в архитектуре. Однако HTTP/3 в качестве сетевого транспортного уровня использует QUIC, который реализует контроль перегрузки пользовательского пространства по UDP.