HTTP/3
HTTP/3 — третья основная версия протокола, лежащего в основе Интернета. Если HTTP/2 был развитием — тот же HTTP, но более быстрая доставка, — HTTP/3 — это модернизированный транспорт, работающий через QUIC вместо TCP+TLS. Он используется по умолчанию для крупных сайтов с 2022 года и незаметно обеспечивает большую часть трафика, который пользователи теперь воспринимают как «быстрый».
Полный текст статьи на английском языке представлен ниже.
HTTP/3 — это HTTP поверх QUIC — веб-протокол следующего поколения, который заменяет стек TCP+TLS+HTTP/2 единым интегрированным дизайном на основе UDP. Он был стандартизирован в RFC 9114 в 2022 году и теперь является протоколом по умолчанию для большинства крупных сайтов, включая Google, Cloudflare, Meta и Microsoft. заголовки, никаких метаданных. Только исторический интерес.
Что исправлено в HTTP/3
Перепроектирование было вызвано тремя конкретными проблемами HTTP/2:
- Блокировка начала строки на транспортном уровне. HTTP/2 мультиплексирует множество потоки через одно TCP-соединение. Когда пакет теряется, TCP приостанавливает все соединение до тех пор, пока потерянный пакет не будет передан повторно, даже если этот пакет нужен только одному потоку. Надежность QUIC для каждого потока исключает это.
- Множественная двусторонняя настройка. TCP-квитирование + TLS-квитирование = 3 туда-обратных передачи, прежде чем HTTP сможет пройти. QUIC объединяет их в 1 туда и обратно (0 в некоторых случаях 0-RTT). При соединении с задержкой 100 мс это дает улучшение загрузки страниц на 200–300 мс. Миграция соединения QUIC сохраняется при переключении, идентифицируя соединение по идентификатору соединения, а не по 5-кортежу. кадрирование
- Мультиплексированные потоки (теперь без блокировки TCP HOL)
- Сжатие заголовка (теперь QPACK вместо HPACK, переработано для работы с потоковой моделью QUIC)
- Та же семантика HTTP — методы, коды состояния, заголовки
Код приложения то, что работало на HTTP/2, работает на HTTP/3 без изменений; различия полностью заключаются в транспорте.
Как браузер использует HTTP/3
Серверы сигнализируют о доступности HTTP/3 через заголовок ответа alt-svc в ответах HTTP/2. Браузер запоминает «этот источник также поддерживает h3 по UDP/443» и использует HTTP/3 для последующих подключений. В случае сбоя QUIC (брандмауэр блокирует UDP и т. д.) браузер возвращается к HTTP/2 через TCP.
Некоторые браузеры также используют записи DNS HTTPS, чтобы узнать о доступности HTTP/3 еще до подключения — сохраняя начальный двусторонний обмен HTTP/2 при первом контакте.
Производительность в практика
Победы самые большие там, где TCP пострадал больше всего:
- Мобильные сети с высокой потерей пакетов и частыми изменениями в сети
- Соединения с высокой задержкой, где имеет значение сохраненное двустороннее подтверждение установления связи пропорционально
- Страницы с большим количеством ресурсов, где мультиплексирование дает преимущества составному
При чистом проводном подключении к границе CDN HTTP/3 и HTTP/2 работают одинаково. Разрыв увеличивается по мере ухудшения условий — именно тогда, когда пользователи замечают медлительность. Akamai, AWS CloudFront, Microsoft, Meta service HTTP/3.
Что не меняется в HTTP/3?
XPLZ112Семантика XHTTP не изменилась. Работают те же шаблоны кэширования, согласования контента, условных запросов и аутентификации. Веб-разработчикам, создающим приложения, редко приходится думать о том, какая версия HTTP используется; платформа с этим справляется. Преимущества автоматически получают все, чей исходный сервер и CDN поддерживают HTTP/3..Часто задаваемые вопросы
- Нужна ли моему сайту отдельная реализация HTTP/3?
- Если вы используете CDN, поддерживающий HTTP/3 (Cloudflare, Fastly, Akamai, CloudFront), он уже есть. Если вы запускаете исходный сервер напрямую, вам нужен сервер с поддержкой HTTP/3 (nginx 1.25+, Caddy, LiteSpeed, h2o). Большинство пользователей получают HTTP/3 при развертывании через CDN.
- Как узнать, использует ли сайт HTTP/3?
- На вкладке «Сеть» браузера DevTools отображается протокол для каждого запроса — «h3» или «http/3» означает HTTP/3. Онлайн-инструменты, такие как http3check.net, также проверяют произвольные сайты. Адресная строка браузера этого не отображает; это вопрос инструментов разработчика.
- Всегда ли HTTP/3 быстрее?
- При соединениях с потерями или высокой задержкой — да. В чистой локальной сети с малой задержкой разница часто заключается в шуме. В сетях, которые блокируют UDP, HTTP/3 полностью выходит из строя и возвращается к HTTP/2 с дополнительной задержкой установки, что медленнее, чем полный пропуск QUIC.
- Что означает HTTP/3 для VPN?
- Современные VPN (WireGuard, OpenVPN) прекрасно туннелируют UDP и HTTP/3. Некоторые старые или ограничительные настройки VPN туннелируют только TCP, и в этом случае HTTP/3 автоматически переключается на HTTP/2. Проверьте поддержку UDP вашего VPN, если вы заметили необычную медлительность на сайтах HTTP/3.
- Будет ли существовать HTTP/4?
- Возможно, со временем, но не скоро. HTTP/3 появился только в 2022 году, и его распространение все еще растет. Будущая версия HTTP, скорее всего, будет развивать QUIC, а не заменять его; QUIC сам по себе является более интересной точкой развития.