UDP: скорость вместо гарантий

Разбираем UDP — лёгкий протокол, который жертвует гарантиями ради скорости.

UDP (User Datagram Protocol) — транспортный протокол без установления соединения: он просто отправляет датаграммы и не следит, дошли ли они.

Философия UDP: «выстрелил и забыл»

Если TCP — это заказное письмо с уведомлением о вручении, то UDP — открытка, брошенная в почтовый ящик. Никакого рукопожатия, никаких подтверждений, никакой повторной отправки. Отправитель шлёт датаграмму и не знает, дошла ли она. Зато — без задержек на установку соединения и ожидание ACK.

Что UDP НЕ делает

  • Не устанавливает соединение (нет handshake).
  • Не гарантирует доставку — пакет может потеряться, и никто не переотправит.
  • Не гарантирует порядок — датаграммы могут прийти вразнобой.
  • Нет контроля потока и перегрузки.

Звучит как сплошные минусы — но именно эта простота даёт минимальную задержку и крошечные накладные расходы. Заголовок UDP — всего 8 байт против 20+ у TCP.

Когда быстрее важнее надёжнее

Есть задачи, где потерять пакет не страшно, а вот ждать его повторной отправки — недопустимо:

ПрименениеПочему UDP
Видеозвонки, VoIPлучше пропустить кадр, чем «затормозить» разговор ожиданием
Онлайн-игрыважна актуальная позиция «сейчас», а не устаревшая, но доставленная
Стриминг видео в реальном временипотеря кадра незаметна, задержка — заметна
DNS-запросыодин маленький запрос/ответ; если потерялся — проще спросить заново

В этих сценариях устаревшие данные бесполезны: позавчерашняя позиция игрока или прошлый кадр видео не нужны, даже если их доставить.

Надёжность поверх UDP

Если приложению всё же нужны какие-то гарантии, оно может реализовать их само поверх UDP — выбирая, что именно ему важно. Так устроен QUIC — протокол поверх UDP, на котором работает HTTP/3. Он берёт скорость UDP и добавляет свою надёжность и шифрование, обходя ограничения старого TCP. То есть выбор «TCP или UDP» — не всегда финальный: на UDP можно построить умный протокол.

Зачем это веб-разработчику

Прямо UDP в вебе вы используете редко, но: DNS-резолвинг (а значит, открытие любого сайта) идёт по UDP; WebRTC (видеозвонки в браузере) — по UDP; HTTP/3 — поверх UDP через QUIC. Понимание, почему здесь не TCP, объясняет архитектуру современных реал-тайм-приложений.

Итог

  • UDP — без соединения, без подтверждений, без гарантий порядка и доставки.
  • Платим надёжностью, получаем минимальную задержку и накладные расходы.
  • UDP выбирают там, где свежесть данных важнее их полноты: видео, игры, VoIP, DNS.
  • Поверх UDP можно строить свои протоколы — например, QUIC для HTTP/3.
Проверьте себя
1. Чем UDP принципиально отличается от TCP?
AUDP шифрует данные, TCP — нет
BUDP не устанавливает соединение и не гарантирует доставку и порядок
CUDP быстрее за счёт сжатия
DUDP работает только в локальной сети
2. Для какой задачи UDP подходит лучше TCP?
AЗагрузка файла без потерь
BПеревод денег в банке
CВидеозвонок в реальном времени
DОтправка email
3. На каком транспортном протоколе работает QUIC (основа HTTP/3)?
ATCP
BUDP
CICMP
Dсобственный протокол сетевого уровня
Поддержать проект