UDP: что это, отличия от TCP, применение — глоссарий | Глоссарий FREEHOSTING

UDP

User Datagram Protocol
UDP — UDP (User Datagram Protocol) — транспортный протокол стека TCP/IP без установления соединения и без гарантий доставки. Работает быстрее TCP за счёт отсутствия рукопожатий и подтверждений. Применяется в DNS, VoIP, видеостриминге, играх, QUIC и большинстве сценариев, где задержка важнее надёжности.

Определение простыми словами

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.