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.