stream 1stream 2stream 3stream 4QUICencryptedUDPUDPUDPUDPUDPstreams ride UDP — no TCP head-of-line

QUIC-протокол

11 минута чтениясеть

QUIC — это транспортный протокол, созданный Google для ускорения работы Интернета, затем переданный IETF, а затем распространенный на половине Интернета под названием HTTP/3. Он работает на UDP вместо TCP, интегрирует шифрование с первого пакета и устраняет несколько десятилетий разочарований эпохи TCP в единой конструкции.

Полный текст статьи на английском языке представлен ниже.

QUIC (первоначально «Быстрые UDP-подключения к Интернету») — это транспортный протокол общего назначения, разработанный Google примерно в 2012 году и стандартизированный IETF как RFC 9000 в 2021 году. Он работает через UDP, передает потоки данных, обеспечивает собственное шифрование и контроль перегрузки и служит основой HTTP/3. По состоянию на конец 2025 года QUIC передает более 30% объема интернет-трафика в основных сетях.

Почему TCP было недостаточно

TCP был разработан в 1981 году и с тех пор не менялся по своей сути. Три проблемы становились все более болезненными:

  • Блокировка начала строки. Один отброшенный пакет останавливает все данные за ним в одном и том же TCP-соединении, даже если потерянный пакет принадлежит одному потоку, а с другими потоками все в порядке. HTTP/2 мультиплексировал множество потоков по одному TCP-соединению, что ухудшало, а не улучшало блокировку начала линии. добавление TLS сверху увеличивает число обращений туда и обратно более чем в 2,5 раза. При мобильных соединениях эта задержка была видна пользователям.
  • Миграция соединения. TCP-соединения идентифицируются по пятикортежу (исходный IP-адрес, исходный порт, целевой IP-адрес, целевой порт, протокол). Когда ваш телефон переключается с Wi-Fi на сотовую связь, IP-адрес меняется, и каждое TCP-соединение разрывается.

QUIC был разработан для исправления всех трех. Каждый поток имеет свой порядок и надежность. Если пакет потерян, останавливается только затронутый поток — остальные потоки продолжаются. Это главная функция, и это свойство делает HTTP/3 заметно быстрее, чем HTTP/2 при соединениях с потерями.

Шифрование, встроенное в

Каждый пакет QUIC после первого рукопожатия шифруется ключами TLS 1.3, включая заголовки транспортного уровня. Там, где TCP предоставляет промежуточным устройствам порядковые номера и флаги, QUIC шифрует их. Рукопожатие завершается за один проход или ноль, если клиент кэширует состояние сеанса (0-RTT, с предостережениями по поводу защиты от повторного воспроизведения).

Это имеет существенный побочный эффект: промежуточные устройства, включая системы DPI, прозрачные прокси и корпоративные межсетевые экраны, больше не могут изменять трафик QUIC так, как они это делали TCP. Они видят , что QUIC-трафик течет, но не могут его декодировать. Для сетевых операторов это имело разрушительные последствия; для конечных пользователей это очевидный выигрыш в конфиденциальности.

Миграция соединения

A Соединение QUIC идентифицируется по 64-битному идентификатору соединения, встроенному в каждый пакет, а не по сетевому 5-кортежу. Когда ваш IP-адрес меняется — телефон перемещается между сотами, переключается между сетями ноутбука, перепривязывается NAT — соединение QUIC продолжается без проблем. Библиотека доказывает серверу, что новый IP/порт по-прежнему является тем же клиентом, выполнив небольшое подтверждение, и трафик возобновляется.

Для мобильных пользователей в пригородных поездах и самолетах Wi-Fi это устраняет целый класс сбоев «мой видеозвонок прерван, потому что я завернул за угол».

Контроль перегрузки

QUIC реализации отправляют свои собственный контроль перегрузки — обычно Reno, Cubic или BBR. Поскольку QUIC — это протокол пользовательского пространства (не в ядре ОС, например TCP), улучшения контроля перегрузки развертываются как обновления приложений, а не как обновления ОС. Google использовал это для развертывания BBRv2 в соединениях Chrome + QUIC быстрее, чем тот же алгоритм мог бы быть развернут посредством обновлений ОС.

Где QUIC используется и не используется

QUIC доминирует в трафике между браузером и сервером для направлений с поддержкой HTTP/3: Google, Meta, Cloudflare, Fastly, Akamai. Браузеры возвращаются к HTTP/2 через TCP в случае сбоя QUIC (некоторые сети блокируют UDP/443, некоторые межсетевые экраны отбрасывают неизвестный UDP, а потери пакетов QUIC могут быть чрезмерно высокими в сетях, настроенных на TCP).

Помимо HTTP, QUIC передает трафик Google RPC, части Apple iCloud, gRPC через QUIC для некоторых пользователей и все чаще DNS-over-QUIC. QUIC является основой WebTransport — низкоуровневого API для браузера, позволяющего осуществлять двунаправленную потоковую передачу через QUIC. В долгосрочной перспективе ожидайте, что на QUIC будет перенесено больше протоколов приложений.Формирование трафика на основе ul>

  • DPI работает по-другому. Интернет-провайдеры, ограничивающие скорость YouTube через DPI, обнаруживают, что трафик QUIC непрозрачен. Время ожидания
  • NAT отличается — UDP NAT обычно имеет 30-секундные таймауты по сравнению с минутами TCP, поэтому QUIC отправляет сообщения поддержки более агрессивно.
  • Некоторые межсетевые экраны полностью отключают QUIC; клиенты должны обнаружить это и отступить. Задержка возврата ограничена, но видима.
  • Для отладки QUIC требуются инструменты, отличные от tcpdump; Вывод qlog и Wireshark с ключами TLS — это современная установка.
  • Часто задаваемые вопросы

    QUIC быстрее TCP?
    Для реальных рабочих нагрузок обычно да — обычно на 10–30 % быстрее в мобильных сетях и сетях с потерями, меньшая выгода при использовании чистых проводных каналов. Улучшение достигается за счет мультиплексирования без блокировки начала линии, более быстрого установления связи и миграции соединений. В идеальной сети без потерь разрыв сокращается.
    Шифрует ли QUIC трафик?
    Да, обязательно и сквозно. Каждый пакет QUIC после рукопожатия шифруется ключами TLS 1.3. Режима «простой QUIC» нет. Сетевые наблюдатели видят зашифрованный UDP с идентификатором соединения QUIC; они не могут читать потоки внутри.
    Почему QUIC работает по UDP, а не по собственному протоколу IP?
    Развертываемость. Новый IP-протокол потребует обновления каждого NAT, брандмауэра и маршрутизатора интернет-провайдера в Интернете — а это десятилетия работы. UDP уже поддерживается повсеместно. QUIC реализует собственную надежность, контроль перегрузки и упорядочивание поверх дейтаграмм UDP с максимальной эффективностью.
    Можно ли использовать VPN-туннель QUIC?
    Да, QUIC — это просто UDP-пакеты для VPN, которая инкапсулирует их в собственный туннель, как и любой другой трафик. WireGuard справится с этим аккуратно; OpenVPN тоже подойдет. Трафик QUIC внутри туннеля шифруется дважды (уровень QUIC + уровень VPN) с небольшими издержками.
    Требуется ли для HTTP/3 QUIC?
    Да, по определению. HTTP/3 — это HTTP поверх QUIC; нет HTTP/3-over-TCP. Именование немного сбивает с толку, поскольку HTTP/2 также имеет прототипы «поверх QUIC» (gQUIC), но версия HTTP/3 IETF — это то, что было выпущено в 2021 году.
    Объяснение QUIC: современный транспортный протокол, который заменил TCP+TLS