Middle+
76
questionbank

Что ты можешь рассказать о HTTP/3?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

HTTP/3 — это мажорная версия протокола HTTP, основанная на QUIC вместо TCP.

Особенности и преимущества:

  • Использование QUIC: Вместо TCP + TLS над ним, HTTP/3 работает прямо над QUIC. QUIC мультиплексирует потоки на уровне транспортного протокола и включает TLS 1.3 для шифрования.

  • Устранение проблемы Head-of-Line Blocking (HOLB) на уровне транспорта: ПосколькуQUIC мультиплексирует потоки, потеря пакета, относящегося к одному потоку, не блокирует доставку данных других потоков в том же соединении. Это было проблемой в HTTP/2, где смежные фреймы из разных потоков могли блокироваться из-за потери пакета на уровне TCP.

  • Быстрое установление соединения: QUIC объединяет установление соединения и согласование TLS, что приводит к сокращению времени задержки (latency).

  • Миграция соединений: QUIC использует Connection ID, позволяя клиентскому соединению оставаться активным при смене IP-адреса или порта (например, при переключении между Wi-Fi и сотовой сетью).

  • Улучшенная обработка потерь пакетов: QUIC использует встроенный механизм обнаружения и восстановления потерь, который может быть более эффективным, чем TCP.

Сравнение с HTTP/2:

ОсобенностьHTTP/2 (над TCP)HTTP/3 (над QUIC)
ТранспортTCP + TLSQUIC
HOLBЕсть на уровне TCPНет на уровне QUIC
Установление соедTCP handshake + TLS handshakeОдно RTT (при повторном подключении может быть 0-RTT)
Миграция соедНет (новое TCP соединение)Есть (через Connection ID)
МультиплексингНа уровне приложения (фреймы в TCP потоке)На уровне транспорта (QUIC потоки)

Реализация в Go:

Стандартная библиотека net/http поддерживает HTTP/3 начиная с версии Go 1.21 экспериментально. Для полноценной поддержки обычно используются zewnętrzne библиотеки, такие как quic-go, интегрированные с net/http.

Пример использования (на клиентской стороне сquic-go):

go