UDP
Что это
UDP (User Datagram HTTP/2.0col) — простой, быстрый, ненадёжный транспорт поверх IP. RFC 768, август 1980. Автор — David Reed. По сути, тонкая обёртка вокруг IP: только порты + контрольная сумма.
Что делает и чего НЕ делает
| TCP | UDP | |
|---|---|---|
| Соединение | да (handshake) | нет |
| Надёжность | да | нет |
| Порядок | гарантирован | не гарантирован |
| Границы сообщений | нет (поток) | да (datagram) |
| Congestion control | да | нет |
| Overhead заголовка | 20+ байт | 8 байт |
Заголовок
Всего 8 байт:
Source Port (16b) | Dest Port (16b)
Length (16b) | Checksum (16b)
Где используется
- DNS (:53) — классический DNS over UDP
- DHCP — конфигурация сети
- NTP — синхронизация времени
- SNMP — сетевой менеджмент
- VoIP / RTP / SIP — голос, видео
- Игры — задержки важнее потерь
- QUIC и следом HTTP/3 — с 2018
- WireGuard, OpenVPN UDP, все современные VPN
Почему возвращение UDP
15 лет TCP был королём. Потом Google сделал QUIC поверх UDP — потому что:
- UDP не окостенел, как TCP
- Все middleboxes пропускают UDP (для DNS/игр)
- QUIC реализует надёжность и congestion control в userspace — можно катить обновления быстрее
- Мультипотоки без head-of-line blocking (в отличие от TCP)
QUIC вернул надёжность поверх UDP
У «голого» UDP нет никаких гарантий — часть пакетов просто не долетает: их дропает роутер при перегрузке, теряет провайдер, проглатывает NAT. Приложение об этом даже не узнаёт. Для DNS-запроса это нормально (переспросим через таймаут), для видео — тоже (пропустим кадр). А для веба — нет.
QUIC (и следом HTTP/3) добавляет поверх UDP то, что раньше делал TCP:
- Sequence numbers и ACK-и — отправитель знает, что дошло, а что нет
- Ретрансмиссии — потерянный пакет отправят повторно
- Congestion control — CUBIC/BBR прямо в userspace-QUIC-стеке
- Порядок доставки внутри стрима — но разные стримы независимы (нет head-of-line blocking, как в TCP)
- Connection migration — соединение переживает смену IP клиента (переход с WiFi на 4G)
Итог: снаружи это по-прежнему UDP-пакеты (порт 443/udp), но приложение получает надёжный поток. При этом реализация QUIC живёт в браузере / библиотеке, а не в ядре ОС — обновления катятся вместе с браузерами, а не ждут по 5 лет апгрейда ядра Linux/Windows.
Amplification атаки
Без handshake атакующий подделывает source IP → сервер отвечает большим ответом жертве. Классика — DNS amplification (57×), NTP (556×), Memcached (51000×!). Провайдеры фильтруют, но проблема остаётся.
В РФ
Массово UDP не режется — иначе бы отвалились DNS, NTP, игры. Но ТСПУ шейпит UDP-порт 443 (QUIC) — из-за чего HTTP/3 часто медленнее HTTP/2. Также вычленяет по сигнатуре UDP-туннели (WireGuard).