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.