Что такое HTTP/3?
HTTP/3 — третья основная версия HTTP, использующая QUIC вместо TCP в качестве транспортного протокола. Это устраняет блокировку потоков на уровне очереди, сокращает задержку установления соединения и повышает производительность в нестабильных сетях.HTTP/3 и HTTP/2
| Возможность | HTTP/2 | HTTP/3 |
|---|---|---|
| Транспорт | TCP | QUIC (поверх UDP) |
| TLS | Отдельный уровень | Встроен в QUIC |
| Рукопожатие | TCP + TLS (2–3 RTT) | 0–1 RTT |
| Блокировка потоков на уровне очереди | На уровне TCP | Устранена |
| Перенос соединения | Не поддерживается | Поддерживается |
| Влияние потери пакета | Блокирует все потоки | Только соответствующий поток |
Как работает HTTP/3
HTTP/2 over TCP:
Client Server
│─────────── SYN ────────────►│
│◄────────── SYN-ACK ─────────│
│─────────── ACK ────────────►│ TCP Handshake
│─────────── ClientHello ────►│
│◄────────── ServerHello ─────│ TLS Handshake
│─────────── Finished ───────►│
│◄────────── Finished ────────│
│─────────── HTTP Request ───►│ (3 RTT minimum)
HTTP/3 over QUIC:
Client Server
│─────── Initial + ClientHello ─►│
│◄────── Initial + ServerHello ──│
│─────── HTTP Request ──────────►│ (1 RTT)
With 0-RTT Resumption:
│─────── 0-RTT + HTTP Request ──►│ (0 RTT!)
Возможности протокола QUIC
| Возможность | Преимущество |
|---|---|
| На основе UDP | Избегает блокировки потоков на уровне TCP |
| Встроенный TLS 1.3 | Всегда шифруется, более быстрое рукопожатие |
| Идентификаторы соединения | Сохраняются при смене IP-адреса |
| Мультиплексирование потоков | Независимая доставка потоков |
| Упреждающая коррекция ошибок | Снижает потребность в повторной передаче |
Перенос соединения
Mobile Network Switch (HTTP/2):
WiFi ──► Connection drops ──► New TCP connection ──► Start over
Mobile Network Switch (HTTP/3):
WiFi ──► Switch to cellular ──► Same QUIC connection continues
(Connection ID persists across IP changes)
Состояние внедрения
| Платформа | Поддержка HTTP/3 |
|---|---|
| Chrome | 87+ (2020) |
| Firefox | 88+ (2021) |
| Safari | 14+ (2020) |
| Edge | 87+ (2020) |
| Cloudflare | Полная поддержка |
| AWS CloudFront | Полная поддержка |
| nginx | 1.25.0+ (экспериментальная) |
Улучшения производительности
- Сети с высокой задержкой: загрузка страниц до 50% быстрее
- Нестабильные соединения: потеря одного пакета не останавливает все потоки
- Мобильные сети: соединение сохраняется при переходе между Wi-Fi и сотовой сетью
- Первые соединения: установка за 1 RTT вместо 3 RTT
Лучшие практики
1. Разворачивайте параллельно с HTTP/2: браузеры корректно откатываются
2. Используйте заголовок Alt-Svc: объявляйте доступность HTTP/3
3. Правильно настройте UDP: убедитесь, что брандмауэры разрешают трафик QUIC
4. Контролируйте производительность: сравнивайте метрики разных версий протокола
5. Тестируйте мобильные сценарии: HTTP/3 особенно эффективен в сотовых сетях
Пример конфигурации сервера
# Alt-Svc header to advertise HTTP/3
Alt-Svc: h3=":443"; ma=86400
HTTP/3 — будущее веб-транспорта: он обеспечивает более быстрые и надёжные соединения, особенно для мобильных пользователей и пользователей сетей с высокой задержкой.