# QUIC

> Транспортный протокол поверх UDP со встроенным шифрованием TLS 1.3, мультиплексированием потоков без блокировки и быстрым установлением соединения; основа HTTP/3.

Источник: https://llmdocs.ru/wiki/quic/ · обновлено 2026-11-09 · лицензия CC BY-SA 4.0

- **Разработка**: Google (Джим Роскинд, 2012), затем IETF
- **Стандарт**: RFC 9000 (май 2021), RFC 9001 (TLS), RFC 9002 (потери и перегрузка)
- **Поверх**: UDP
- **Шифрование**: TLS 1.3, встроено и обязательно
- **Установление соединения**: 1-RTT, при повторном — 0-RTT
- **Особенности**: независимые потоки, миграция соединения, шифрование заголовков
- **Применение**: HTTP/3 (RFC 9114, 2022), DNS over QUIC, SMB, туннели
**QUIC** — транспортный протокол, работающий поверх [UDP](https://llmdocs.ru/wiki/udp.md) и объединяющий функции [TCP](https://llmdocs.ru/wiki/tcp.md) (надёжная упорядоченная доставка, управление перегрузкой) и [TLS](https://llmdocs.ru/wiki/tls.md) (шифрование) в одном слое. Он устанавливает защищённое соединение за один круг «туда-обратно», передаёт много независимых потоков без взаимной блокировки и сохраняет соединение при смене сети — например, при переходе телефона с Wi-Fi на мобильный интернет. Название изначально расшифровывалось как *Quick UDP Internet Connections*, но в стандарте IETF это просто имя.[1]

QUIC — основа **HTTP/3** (см. [HTTP/2 и HTTP/3](https://llmdocs.ru/wiki/http2-http3.md)); его поддерживают все основные браузеры, Google, Cloudflare, Meta и крупные CDN, а значительная доля веб-трафика уже идёт через QUIC.

## История

Инженер Google Джим Роскинд спроектировал QUIC в 2012 году; в 2013 году Google начала использовать его между Chrome и своими сервисами. Работа на масштабе интернета описана в статье на SIGCOMM 2017: QUIC заметно сократил задержки поиска и буферизацию видео YouTube, особенно в медленных сетях.[5] С 2016 года протокол стандартизировала IETF, существенно его переработав: IETF QUIC использует стандартный TLS 1.3 вместо собственной криптографии Google. Основные спецификации вышли в мае 2021 года (RFC 9000–9002), HTTP/3 — в июне 2022 года (RFC 9114).[4]

## Зачем нужен новый транспорт

У связки TCP + TLS есть проблемы, которые трудно исправить:

- **Блокировка начала очереди.** TCP — один упорядоченный поток. В HTTP/2 по одному соединению идут десятки запросов, и потеря одного пакета задерживает их все.
- **Медленное установление.** Рукопожатие TCP плюс рукопожатие TLS — два круга «туда-обратно» до первых данных.
- **Окостенение протокола.** TCP реализован в ядрах операционных систем и «понимается» множеством промежуточных устройств — файрволов, NAT, балансировщиков. Любое изменение TCP годами не может распространиться, потому что сетевое оборудование отбрасывает непривычные пакеты.

QUIC решает это, работая в пространстве пользователя поверх UDP (который пропускают почти все сети) и шифруя почти весь заголовок, чтобы промежуточные устройства не могли на него опираться.

## Основные возможности

| Возможность | Как работает |
|---|---|
| Быстрое установление | транспортное и криптографическое рукопожатие объединены: 1-RTT; при повторном подключении данные можно отправить сразу (0-RTT) |
| Потоки | много независимых упорядоченных потоков в одном соединении; потеря пакета задерживает только свой поток |
| Встроенное шифрование | TLS 1.3 обязателен; шифруются данные и большая часть заголовков[2] |
| Миграция соединения | соединение определяется идентификатором, а не IP-адресом и портом, поэтому переживает смену сети |
| Управление перегрузкой | как в TCP (по умолчанию алгоритм в духе NewReno, на практике CUBIC и BBR), но развивается в приложении[3] |

Режим 0-RTT имеет оговорку: первые данные можно перехватить и **воспроизвести повторно**, поэтому в нём отправляют только идемпотентные запросы.

## HTTP/3

HTTP/3 — это семантика [HTTP](https://llmdocs.ru/wiki/http.md) поверх QUIC. Браузер узнаёт о поддержке HTTP/3 из заголовка `Alt-Svc` или DNS-записи HTTPS, после чего пробует подключиться по UDP на порт 443 и при неудаче возвращается к HTTP/2 поверх TCP.

```bash
curl --http3 -I https://cloudflare.com     # если curl собран с поддержкой HTTP/3
```

В инструментах разработчика браузера (вкладка «Сеть», столбец «Протокол») HTTP/3 отображается как `h3`.

## Реализации

Поскольку QUIC работает в пространстве пользователя, реализаций много: quiche (Cloudflare, Rust), msquic (Microsoft), ngtcp2 (C), quic-go (Go), quinn (Rust), а также встроенные в Chromium, Firefox и серверы. [nginx](https://llmdocs.ru/wiki/nginx.md) поддерживает HTTP/3 с версии 1.25, [Caddy](https://llmdocs.ru/wiki/caddy.md) — по умолчанию. Помимо HTTP/3 QUIC используют DNS over QUIC (RFC 9250),[6] протокол SMB в Windows, туннели и VPN (MASQUE).

## Недостатки и ограничения

- **Нагрузка на процессор.** Обработка в пространстве пользователя и шифрование каждого пакета дороже, чем TCP с аппаратными оптимизациями ядра; разрыв сокращается.
- **Блокировка UDP.** Некоторые корпоративные сети и провайдеры блокируют или ограничивают UDP, поэтому клиенты обязаны уметь откатываться на TCP.
- **Наблюдаемость.** Зашифрованные заголовки затрудняют диагностику сети и работу систем, анализирующих трафик; отладка требует ключей TLS (`SSLKEYLOGFILE`) и поддержки QUIC в Wireshark.
- **Фильтрация.** Поскольку QUIC шифрует почти всё, включая часть рукопожатия, системы фильтрации трафика нередко блокируют его целиком.

## См. также

- [HTTP/2 и HTTP/3](https://llmdocs.ru/wiki/http2-http3.md)
- [UDP](https://llmdocs.ru/wiki/udp.md)
- [TCP](https://llmdocs.ru/wiki/tcp.md)
- [TLS](https://llmdocs.ru/wiki/tls.md)
- [Модель OSI](https://llmdocs.ru/wiki/osi-model.md)

## Источники

1. [RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport](https://www.rfc-editor.org/rfc/rfc9000)
2. [RFC 9001 — Using TLS to Secure QUIC](https://www.rfc-editor.org/rfc/rfc9001)
3. [RFC 9002 — QUIC Loss Detection and Congestion Control](https://www.rfc-editor.org/rfc/rfc9002)
4. [RFC 9114 — HTTP/3](https://www.rfc-editor.org/rfc/rfc9114)
5. [A. Langley et al. — The QUIC Transport Protocol: Design and Internet-Scale Deployment (SIGCOMM 2017)](https://dl.acm.org/doi/10.1145/3098822.3098842)
6. [RFC 9250 — DNS over Dedicated QUIC Connections](https://www.rfc-editor.org/rfc/rfc9250)
