Что такое HTTP/3 и в чем его ключевые отличия от HTTP/2?

Ответ

HTTP/3 — это третья и самая последняя версия протокола HTTP. Его главное архитектурное отличие заключается в том, что он работает поверх протокола QUIC (Quick UDP Internet Connections), который, в свою очередь, использует UDP вместо TCP.

Ключевые преимущества и отличия от HTTP/2:

  1. Решение проблемы "Head-of-Line Blocking" на уровне транспорта.

    • В HTTP/2, хотя мультиплексирование позволяло передавать несколько потоков данных одновременно, потеря одного TCP-пакета блокировала все потоки, так как TCP требует строгой последовательности.
    • В HTTP/3, поскольку QUIC работает поверх UDP, потоки данных являются независимыми. Потеря пакета в одном потоке не влияет на другие, что значительно повышает производительность в сетях с потерями.
  2. Более быстрое установление соединения.

    • QUIC объединяет в себе функциональность TCP и TLS. Рукопожатие (handshake) происходит быстрее, чем последовательные рукопожатия TCP и TLS, что сокращает задержку при установке нового соединения (часто с 2-3 RTT до 1 RTT или даже 0-RTT для повторных соединений).
  3. Встроенное шифрование.

    • В отличие от TCP, протокол QUIC требует шифрования по умолчанию (используя TLS 1.3). Это делает соединения более безопасными и защищает метаданные от прослушивания.
  4. Плавная смена сети (Connection Migration).

    • Соединение в QUIC идентифицируется по уникальному ID, а не по паре IP-адрес/порт. Это позволяет клиенту (например, мобильному телефону) переключаться между сетями (Wi-Fi, 4G) без разрыва соединения.

Поддержка в Go:

Поддержка HTTP/3 в Go активно развивается. Для работы с ним можно использовать библиотеку quic-go и стандартный пакет net/http3 (который является экспериментальным).

В целом, HTTP/3 спроектирован для более быстрой, надежной и безопасной работы веба, особенно в условиях мобильных и нестабильных сетей.