1. 1
  2. 2
  3. 3
  4. 4
  5. 5

# конспект · шаг 5 из 5

Конспект: HTTP/3 и QUIC

выжимка - её можно унести в заметки

QUIC решает то, чего не мог HTTP/2, и приносит свои сложности.

Что даёт QUIC

Свойство Что меняет
надёжность на каждый поток отдельно потеря пакета тормозит только свой поток
TLS 1.3 встроен шифрование не отключается, это часть протокола
короче рукопожатие один круговой обход вместо двух (TCP + TLS)
соединение переживает смену сети Wi-Fi → LTE без разрыва: идентификатор соединения, а не четвёрка адресов

Как включить

listen 443 ssl;                  # TCP: HTTP/1.1 и HTTP/2
listen 443 quic reuseport;       # UDP: HTTP/3
http2 on;
http3 on;                        # по умолчанию on

add_header Alt-Svc 'h3=":443"; ma=86400' always;

Браузер узнаёт про HTTP/3 из Alt-Svc - без этого заголовка он продолжит ходить по TCP.

Чем платят

  • UDP режут: корпоративные сети и часть публичных Wi-Fi блокируют UDP/443 - нужен рабочий запасной путь по TCP (он и так есть);
  • процессор: сборка потоков и шифрование живут в пользовательском пространстве;
  • отладка: tcpdump покажет поток UDP-датаграмм и ничего больше.

Настройки, о которых стоит знать

quic_retry, quic_host_key, quic_gso, quic_bpf - для нагрузки и защиты от подделки адреса.

Ловушки джокера

  • Забыть открыть UDP/443 в файрволе - HTTP/3 просто не включится, и никакой ошибки не будет.
  • listen 443 quic без сертификата - QUIC требует TLS всегда.
  • 0-RTT и повтор запроса: ранние данные могут быть воспроизведены атакующим, поэтому небезопасные методы через 0-RTT пускать нельзя.
  • Модуль до сих пор называется экспериментальным в документации, и по HTTP/3 регулярно выходят исправления безопасности: CVE-2026-42530 (use-after-free в QUIC) закрыт в 1.31.2, подмена адреса при миграции - в 1.30.1. Включаешь HTTP/3 - обновляйтесь быстро.

Что показал стенд

опыт результат
чистая сеть, 30 файлов, задержка 100 мс h1.1 x6 821 мс, h2 814, h3 719 - экономия круга на рукопожатии
потери 3% на стороне ответов h1.1 x6 медиана 1237, h2 2021, h3 7532
listen quic без сертификата no "ssl_certificate" is defined for the "listen ... quic"
reuseport в двух блоках порта duplicate listen options for 0.0.0.0:9443
curl --http3 против --http3-only первый молча откатился на HTTP/2 и показал h2

Вторая строка - главное честное наблюдение раздела: обещанный выигрыш HTTP/3 на потерях на стенде не воспроизвёлся, h3 оказался хуже обоих. Причина не в идее протокола, а в реализации и настройке пути (userspace QUIC, ненастроенные буферы UDP, отсутствие quic_gso). Вывод рабочий: включать рядом с HTTP/2 и смотреть на свои метрики.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.