Что такое UDP протокол?

«Что такое UDP протокол?» — вопрос из категории Сети, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

UDP (User Datagram Protocol) — это простой, ориентированный на дейтаграммы протокол транспортного уровня. В отличие от TCP, он не устанавливает соединение, не гарантирует доставку, порядок пакетов и не контролирует перегрузку сети. Это делает его очень быстрым и с минимальными накладными расходами.

Характеристики с точки зрения DevOps/инфраструктуры:

  • Заголовок: Всего 8 байт (порты источника/назначения, длина, контрольная сумма).
  • Статус: "Отправил и забыл". Приложение само должно обрабатывать потерю, дублирование и порядок пакетов.
  • Нет handshake: Нет аналога SYN, SYN-ACK, ACK как в TCP.
  • Нет контроля перегрузки: Может "затопить" сеть, если не реализован на уровне приложения.

Типичные сценарии использования в инфраструктуре:

  1. DNS-запросы: Быстрота критична, потерянный запрос просто повторяется.
  2. Трафик мониторинга и телеметрии:
    • Syslog: Часто отправляется по UDP для минимального влияния на приложение.
    • StatsD: Сервер для сбора метрик, изначально работающий по UDP.
    • SNMP: Протокол управления сетевыми устройствами.
  3. Стриминг мультимедиа и VoIP: Небольшая потеря пакетов предпочтительнее задержек (латенси).
  4. Онлайн-игры: Состояние игры обновляется очень часто, актуальность данных важнее их полноты.
  5. Обслуживание (Bootstrapping): DHCP и TFTP используют UDP.

Пример отправки UDP-пакета с помощью netcat (полезно для отладки):

# Отправка строки на сервер 192.168.1.10 порт 514 (syslog)
echo "<133>Apr 11 11:22:33 myapp: Test log message" | nc -u -w1 192.168.1.10 514

# Прослушивание UDP-порта 5000
nc -u -l 5000

Важно для DevOps: При настройке брандмауэров (Security Groups, Network Policies в K8s, iptables) необходимо явно разрешать UDP-трафик на нужные порты, так как правила для TCP и UDP раздельны. Например, разрешение DNS (порт 53) должно включать и TCP, и UDP.