BROWSERHTTP/3SERVERover QUIC over UDP/4431-RTT handshake, multiplexed streams

HTTP/3

10 хв. читанняВеб-технології

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

A Короткий довідник:

  • HTTP/0.9 (1991): однорядкові запити, немає заголовки, без метаданих. Лише історичний інтерес.
  • HTTP/1.0 (1996): заголовки, кілька методів, типи MIME. Кожен запит нового TCP-з’єднання.
  • HTTP/1.1 (1997, переглянуто 2014): постійні з’єднання, конвеєрне об’єднання, заголовки хостів. «Робоча конячка» Інтернету протягом двох десятиліть.
  • HTTP/2 (2015): бінарний протокол, стиснення заголовків (HPACK), мультиплексування потоків, сервер push. Працює через TLS через TCP.
  • HTTP/3 (2022): працює через QUIC через UDP. Усуває блокування переднього рядка TCP, швидше рукостискання, підтримує міграцію підключення.

Що вирішив HTTP/3

Три конкретні проблеми HTTP/2 спричинили модернізацію:

  • Блокування переднього рядка на транспортному рівні. HTTP/2 мультиплексує багато потоків через одне з’єднання TCP. Коли пакет втрачається, TCP зупиняє все з’єднання, доки втрачений пакет не буде повторно передано — навіть якщо цей пакет потрібен лише для одного потоку. Надійність QUIC для кожного потоку усуває це.
  • Налаштування кількох двосторонніх маршрутів. Квіткування TCP + TLS = 3 двосторонні передачі перед тим, як HTTP зможе надходити. QUIC об’єднує їх у 1 двосторонній маршрут (0 у деяких випадках 0-RTT). Для підключення із затримкою 100 мс це покращення завантаження сторінки на 200–300 мс.
  • Припинення з’єднання при зміні мережі. Перехід із Wi-Fi на стільниковий зв’язок руйнує кожне TCP-з’єднання. Перенесення з’єднань QUIC витримує перемикання, ідентифікуючи з’єднання за допомогою ідентифікатора з’єднання, а не 5-кортежу.

Що залишається таким же, як HTTP/2

З точки зору програми HTTP/3 виглядає дуже схожим на HTTP/2:

  • Binary фреймування
  • Мультиплексовані потоки (тепер без блокування 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 працюють однаково. Розрив збільшується в міру погіршення умов — саме тоді, коли користувачі помічають повільність.

Прийняття

Наприкінці 2025 року:

  • Chrome, Firefox, Safari, Edge усі за замовчуванням використовують HTTP/3, коли це пропонує сервер.
  • Cloudflare, Google, Швидко Akamai, AWS CloudFront, Microsoft, Meta обслуговують HTTP/3.
  • Приблизно 30–40% усіх веб-запитів за обсягом використовують HTTP/3.
  • Багато корпоративних мереж блокують QUIC на брандмауері, змушуючи повернутися до HTTP/2. Це найбільший блокувальник для більшого впровадження.

Що HTTP/3 не змінює

Семантика HTTP не змінюється. Працюють ті самі шаблони кешування, узгодження вмісту, умовних запитів і автентифікації. Веб-розробникам, які створюють програми, рідко потрібно думати про те, яка версія 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 є більш цікавою точкою еволюції.
Пояснення HTTP/3: веб-протокол на основі QUIC для сучасних браузерів