UDP · 1980 → QUIC · 2026

QUIC

Протокол, который взял скорость UDP, прикрутил к нему надёжность TCP и шифрование TLS 1.3 — и собрал всё заново, правильно.

0-RTT
повторное подключение
~35%
весь трафик интернета
UDP : 443
вместо TCP
RFC 9000
стандарт с 2021
↓ ЛИСТАЙ
Глава 1

История UDP: гениальная простота

В 1980 году Дэвид Рид написал RFC 768 — спецификацию User Datagram Protocol на три страницы. Пока TCP был сложным механизмом с рукопожатиями и гарантиями доставки, UDP сказал: «Вот твой пакет, отправил и забыл».

Что сравниваемTCPUDP
Заголовок20–60 байтвсего 8 байт
РукопожатиеSYN → SYN-ACK → ACKнету вообще
Гарантия доставкиданет
Порядок пакетовстрогийкак повезёт
Задержкавышеминимальная
Для чего придуманстраницы, файлыигры, звонки, DNS, стримы

Идея Рида была в том, что приложения сами знают лучше, что им нужно. Зачем платить за гарантии, которые тебе не нужны? Потерял кадр видеозвонка — ну и похуй, следующий придёт через миллисекунду. Ретрансмиссия тут только мешает.

Скорость

Нет setup'а соединения — первый же пакет уже несёт данные. Идеально для DNS и игр.

🎛

Контроль у приложения

Сам решай, что ретрансмить, а что забить. WebRTC так и живёт.

📡

Broadcast / multicast

Один пакет — всем в сети. TCP так не умеет в принципе.

Но у простоты была цена. 40 лет интернет строил поверх TCP всё, что требовало надёжности. А потом стало понятно: TCP — это тупик. Его нельзя обновить, потому что он зашит в ядра ОС, роутеры и middleboxes по всему миру.

Глава 2

Как появился QUIC

Google задал вопрос: если TCP тронуть нельзя — а если сделать надёжный протокол поверх UDP и вынести его из ядра в userspace?

2012

Эксперименты Google

Джим Роскинд и команда начинают внутренние тесты прототипа: TLS + надёжность поверх UDP.

2013

Публичный доклад

Google рассказывает о «QUIC» (Quick UDP Internet Connections): поиск страниц стал быстрее на несколько процентов — уже на тех данных, что были.

2014

Chrome включают QUIC

Браузер начинает пробовать QUIC к сервисам Google параллельно с TCP: кто первый — тем и отдаём данные.

2016

IETF берётся за стандарт

gQUIC был проприетарным и костыльным (спрятанный SPDY внутри). IETF переписывает с нуля: чистый transport + TLS 1.3 внутри.

2018

Имя HTTP/3

HTTP-over-QUIC официально переименовывают в HTTP/3. Все понимают: это будущий дефолт веба.

2021

RFC 9000 / 9001 / 9002

QUIC v1 стандартизирован. Cloudflare, Google, Facebook уже гоняют через него огромную долю трафика.

2022+

HTTP/3 повсюду

Поддержка во всех браузерах и CDN. Сегодня через QUIC идёт уже больше трети всего интернет-трафика — и доля растёт.

Глава 3

Почему QUIC пиздат 💜

Не «немного быстрее TCP». Он решает фундаментальные проблемы, которые TCP не может решить никогда:

🚀

0-RTT и 1-RTT

TCP+TLS = 2–3 round-trip'а до первого байта. QUIC совмещает транспортный хендшейк с TLS 1.3: первое подключение — 1-RTT, повторное к известному серверу — 0-RTT, данные летят в самом первом пакете. На мобильном интернете с пингом 80мс это сотни миллисекунд экономии.

🚫

Нет Head-of-Line blocking

Главная боль TCP: потерялся один пакет — встала вся очередь, хоть сто потоков поверх него открыто. В QUIC потоки независимы: потеря в стриме №3 не тормозит стримы №1 и №2. Данные просто ждут в своём стриме.

📶

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

TCP-соединение = IP + порт. Сменил Wi-Fi на LTE — IP сменился — соединение сдохло, переконнект заново. QUIC живёт по Connection ID: сеть сменилась, а сессия продолжает жить. Видео не рвётся, загрузки не слетают.

🔒

Шифруется вообще всё

В TLS поверх TCP заголовки пакетов (порты, seq-номера, флаги) видит любой на пути. В QUIC зашифрованы даже транспортные хедеры — middleboxes не могут ни подсмотреть, ни испортить. DPI видит мусор.

🧬

Userspace = эволюция

TCP обновляется только с ядром ОС — годами. QUIC живёт в userspace: браузер или библиотека обновились — новый алгоритм контроля перегрузки (BBRv3?) у всех на следующий день. Протокол эволюционирует как софт, а не как железо.

🔀

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

Не нужен HTTP/2 поверх капризного TCP — стримы родные, встроенные. У каждого свой flow control, приоритеты и порядок.

Глава 4

Тонкости и особенности

Дьявол в деталях — вот что надо знать про QUIC под капотом:

📦Минимальный пакет 1200 байт

Каждый QUIC-датаграмма должна быть минимум 1200 байт — чтобы сервер мог проверить путь на MTU и защититься от амлификации.

🛡Анти-амлификация

Сервер до подтверждения клиента отвечает максимум в 3 раза большим объёмом, чем получил. Иначе QUIC превратили бы в усилитель DDoS.

🎲0-RTT можно реплеить

Данные ранних 0-RTT пакетов атакующий может записать и отправить дважды — сервер их примет как новые. Поэтому 0-RTT только для идемпотентных запросов, не для POST платежей.

🪪Connection ID меняется

CID не статичен: стороны регулярно ротируют его, чтобы трекеры не могли связать сменённые сети по одному ID. Приватность даже на этом уровне.

🎚Flow control двух уровней

Отдельные лимиты на каждый стрим и общий на соединение. Приложение само рулит, кому сколько окна давать — TCP такого не умеет.

📮Unreliable mode тоже есть

RFC 9221 Datagram Frames: можно слать ненадёжные датаграммы внутри QUIC-сессии — для игр и realtime, когда ретрансмиссия вредна.

🕳AES-GCM обязателен

TLS 1.3 внутри QUIC разрешает только AEAD-шифры. Классические CBC и RC4 остались в музее.

🔁Fallback обязателен

Часть сетей режет UDP или душит его скорость. Поэтому клиент всегда держит TCP-фоллбек и шлёт Alt-Svc, чтобы при следующем визите попробовать h3.

Главный компромисс: QUIC — это TCP, TLS и часть логики ОС, пересобранные в userspace. За гибкость платят CPU (шифрование хедеров + userspace-стек дороже kernel TCP) и сложностью реализации. Но на фоне выигрыша в latency — цена смешная.
Итог

UDP дал сырьё — QUIC построил дом

UDP в 1980-м подарил интернету свободу: голый канал без правил. 40 лет никто не знал, что делать с этой свободой, кроме игр и DNS. Google понял: свобода UDP + дисциплина TCP + приватность TLS = интернет, каким он должен был быть с самого начала. Просто в 1981 году ещё не было криптографии, мобильных сетей и понимания, как всё будет.

# Эволюция одним взглядом 1980 UDP → скорость, ноль гарантий 1981 TCP → надёжность, но навсегда в ядре 1995 TLS → приватность, отдельным слоем 2015 HTTP/2 → мультиплекс… упёрся в TCP 2021 QUIC → всё вышеперечисленное сразу