Skip to content
← Все статьи

HTTP/2 и HTTP/3: чем отличаются и что быстрее

Протокол HTTP — основа современного веба. Эволюция от HTTP/1.1 к HTTP/2 и HTTP/3 принесла значительные улучшения производительности. Понимание различий между этими версиями помогает правильно настроить сервер и ускорить загрузку сайта.

Краткая история HTTP

ВерсияГодТранспортКлючевое нововведение
HTTP/1.01996TCPБазовый протокол
HTTP/1.11997TCPKeep-alive, chunked transfer, Host header
HTTP/22015TCP + TLSМультиплексирование, сжатие заголовков, server push
HTTP/32022QUIC (UDP)Устранение HOL blocking на транспортном уровне

HTTP/1.1 — проблемы

HTTP/1.1 — простой и понятный, но у него есть серьёзные ограничения производительности:

  • Один запрос за раз — каждое TCP-соединение обрабатывает запросы последовательно. Браузеры открывают 6–8 параллельных соединений к одному домену, но этого недостаточно для современных сайтов с десятками ресурсов.
  • Текстовые заголовки — заголовки передаются в текстовом виде и повторяются в каждом запросе. Cookie и другие заголовки могут занимать несколько килобайт.
  • Отсутствие приоритизации — все ресурсы загружаются с одинаковым приоритетом.

HTTP/2 — мультиплексирование

HTTP/2 решает проблемы HTTP/1.1 с помощью бинарного фрейминга:

Мультиплексирование

Несколько запросов и ответов передаются одновременно через одно TCP-соединение. Каждый запрос — это отдельный «поток» (stream), и потоки не блокируют друг друга на уровне HTTP.

Сжатие заголовков (HPACK)

HTTP/2 использует алгоритм HPACK для сжатия заголовков. Повторяющиеся заголовки (Host, User-Agent, Accept) кодируются индексами, что сокращает размер на 85–90%.

Приоритизация потоков

Клиент может указать приоритет каждого запроса. CSS и JS могут загружаться с высоким приоритетом, а изображения — с низким.

Server Push

Сервер может отправить ресурсы до того, как клиент их запросит. Например, вместе с HTML сразу отправить CSS. На практике Server Push используется редко из-за сложности настройки и кэширования.

Проблема HTTP/2: Head-of-Line Blocking

Хотя HTTP/2 мультиплексирует потоки на уровне HTTP, все они передаются через одно TCP-соединение. Если теряется один TCP-пакет, все потоки блокируются до его повторной передачи. Это называется TCP Head-of-Line Blocking.

HTTP/3 — QUIC вместо TCP

HTTP/3 решает проблему HOL blocking, заменив TCP на QUIC — новый транспортный протокол на базе UDP.

QUIC: главные преимущества

  • Независимые потоки — потеря пакета в одном потоке не блокирует остальные. Каждый поток в QUIC независим на транспортном уровне.
  • Быстрое установление соединения — QUIC объединяет TLS-хэндшейк с транспортным, сокращая время установления соединения с 2–3 RTT (TCP + TLS) до 1 RTT (или 0-RTT для повторных соединений).
  • Миграция соединения — при смене сети (Wi-Fi → мобильная связь) соединение сохраняется, потому что QUIC использует Connection ID вместо IP:port.
  • Встроенное шифрованиеTLS 1.3 встроен в протокол. Незашифрованный HTTP/3 невозможен.

Сравнение производительности

ПараметрHTTP/1.1HTTP/2HTTP/3
Установление соединения1 RTT (TCP) + 2 RTT (TLS)1 RTT (TCP) + 1 RTT (TLS 1.3)1 RTT (QUIC+TLS) / 0-RTT
Параллельные запросы6–8 соединенийНеограниченно (1 соединение)Неограниченно (1 соединение)
HOL blockingНа уровне HTTPНа уровне TCPОтсутствует
Сжатие заголовковНетHPACKQPACK
Потеря пакетовБлокирует всёБлокирует всёБлокирует только один поток

Когда HTTP/3 заметно быстрее

  • На мобильных сетях с высоким процентом потери пакетов
  • При высокой задержке (RTT > 100 мс)
  • При частой смене сети (мобильные устройства)
  • Для сайтов с большим количеством мелких ресурсов

Как проверить протокол сайта

Проверить, какой протокол HTTP использует сайт, можно несколькими способами:

В браузере

Откройте DevTools (F12) → Network → правой кнопкой по заголовку столбцов → включите «Protocol». Вы увидите h2 (HTTP/2) или h3 (HTTP/3) для каждого ресурса.

Через curl

# HTTP/2
curl -I --http2 https://example.com

# HTTP/3 (требует curl с поддержкой QUIC)
curl -I --http3 https://example.com

Онлайн-инструменты

Инструмент проверки проверку HTTP-заголовков на Enterno.io показывает версию протокола в ответе сервера.

Настройка на сервере

nginx (HTTP/2)

server {
    listen 443 ssl;
    http2 on;
    ssl_certificate /path/to/cert.pem;
    ssl_certificate_key /path/to/key.pem;
}

nginx (HTTP/3)

server {
    listen 443 ssl;
    http2 on;
    listen 443 quic reuseport;
    http3 on;
    add_header Alt-Svc 'h3=":443"; ma=86400';
}

Рекомендации

  • Включите HTTP/2 — это минимум для современного сайта
  • Рассмотрите HTTP/3, если ваша аудитория на мобильных устройствах
  • Не отключайте HTTP/1.1 — нужен как fallback
  • Используйте TLS 1.3 для максимальной производительности
  • Регулярно проверяйте протокол через инструменты анализа заголовков

Проверьте ваш сайт прямо сейчас

Проверить HTTP-статус сайта →
Другие статьи: HTTP
HTTP
Ошибка 503 Service Unavailable: причины и решения
15.04.2026 · 93 просм.
HTTP
Ошибка 522 Connection Timed Out (Cloudflare): как исправить
23.06.2026 · 31 просм.
HTTP
HTTP коды ответов: полный справочник с примерами
10.03.2025 · 258 просм.
HTTP
Ошибка 500 Internal Server Error: что значит и как починить
15.04.2026 · 113 просм.