Определение простыми словами
UDP — это «выстрелил и забыл». Отправитель просто шлёт пакет (датаграмму), не открывая соединение и не дожидаясь подтверждения. Если пакет потерялся — UDP его не повторит, восстановление лежит на приложении. Зато нет накладных расходов на handshake и контроль порядка, поэтому UDP быстрее TCP и хорошо подходит там, где задержка важнее, чем 100 % доставка.
Заголовок UDP минимален: 8 байт — порт источника, порт назначения, длина и контрольная сумма. Маршрутизаторы и фаерволы обрабатывают UDP-пакеты независимо.
Сравнение
| Параметр | UDP | TCP |
|---|---|---|
| Установка соединения | Нет | Да (3-way handshake) |
| Гарантия доставки | Нет | Да |
| Порядок пакетов | Не сохраняется | Сохраняется |
| Заголовок | 8 байт | 20–60 байт |
| Скорость | Высокая | Средняя |
| Типичные сценарии | DNS, VoIP, игры, стриминг | HTTP, SSH, почта, БД |
Кейсы использования
- DNS-запросы: ответ помещается в один пакет, повтор делает резолвер на уровне приложения.
- VoIP и видеосвязь (Zoom, WebRTC): потерянный кадр уже не нужен — TCP-повтор только увеличил бы задержку.
- Игровые серверы (Counter-Strike, Minecraft Bedrock, Valheim): мгновенная доставка позиций важнее, чем переотправка.
- Стриминг и live-видео по протоколу SRT/RTP, телеметрия IoT, синхронизация времени NTP.
- Современный QUIC и HTTP/3 построены поверх UDP с собственной надёжностью на уровне приложения.
Когда UDP неуместен: для задач, где потеря байта критична — банковские транзакции, передача файлов, веб-страницы. Также UDP плохо проходит через NAT без техник hole-punching и часто блокируется корпоративными фаерволами.
Технические детали
Открытие UDP-портов в iptables и проверка соединения:
sudo iptables -A INPUT -p udp --dport 53 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 27015 -j ACCEPT
sudo ss -ulnp
sudo nmap -sU -p 53,123,27015 example.com
nc -u -l 9999
nc -u example.com 9999
Тест пропускной способности UDP с помощью iperf3:
iperf3 -s
iperf3 -c example.com -u -b 100M -t 30
Утилита nmap сканирует UDP-порты медленнее TCP — пакеты безответны и приходится ждать ICMP «port unreachable». Для отладки реального трафика используют tcpdump и Wireshark, фильтр udp port 53.
🔥 Где это применяется
Частые вопросы
Чем UDP лучше TCP?
Меньшей задержкой и накладными расходами. UDP не устанавливает соединение и не подтверждает каждый пакет, поэтому подходит для real-time задач: голос, видео, игры.
Как UDP справляется с потерей пакетов?
Никак — потеря лежит на приложении. VoIP-кодеки маскируют пропуск, игры синхронизируются на следующем тике, DNS-резолвер просто повторяет запрос.
Можно ли передавать большие файлы по UDP?
Можно с собственным контролем доставки (UDT, KCP, QUIC). Но для классической передачи файлов проще TCP — операционная система всё сделает за вас.
Почему DNS использует UDP?
Запрос и ответ помещаются в один пакет до 512 байт, накладные расходы на TCP-handshake были бы непропорционально велики. Для больших ответов DNS переключается на TCP.