Открыть сервис

Протокол UDP

Протокол UDP (User Datagram Protocol, протокол пользовательских датаграмм) — один из основных транспортных протоколов стека TCP/IP, обеспечивающий передачу данных между приложениями в компьютерных сетях без установления предварительного соединения и без гарантий доставки, упорядочивания или защиты от дублирования пакетов. Относится к классу протоколов с негарантированной доставкой (best-effort delivery). Определён в стандарте RFC 768 (1980 год), разработанном Дэвидом Ридом.

Принцип работы

UDP функционирует на транспортном уровне модели OSI (уровень 4) и поверх протокола IP (сетевой уровень). В отличие от TCP, UDP не устанавливает логическое соединение между отправителем и получателем перед передачей данных. Каждая единица данных — датаграмма — отправляется независимо, без подтверждения получения и без контроля потока.

Формат датаграммы

UDP-датаграмма состоит из заголовка (8 байт) и поля данных (payload). Заголовок включает четыре двухбайтовых поля:

  • Порт источника (Source Port) — опционально, идентифицирует отправляющий процесс. Если не используется, заполняется нулями.
  • Порт назначения (Destination Port) — обязателен, указывает на принимающий процесс на узле назначения.
  • Длина (Length) — общая длина датаграммы в байтах (заголовок + данные). Минимальное значение — 8 (только заголовок).
  • Контрольная сумма (Checksum) — опционально для IPv4, обязательна для IPv6. Вычисляется по псевдозаголовку, включающему IP-адреса источника и назначения, и защищает как заголовок, так и данные от ошибок.

Поле данных может быть пустым (нулевой длины). Максимальный размер UDP-датаграммы ограничен 65535 байтами (с учётом IP-заголовка — 65507 байт для IPv4). На практике размер часто ограничивается MTU канала связи (обычно 1500 байт для Ethernet).

Отсутствие соединения

UDP не использует механизмы установки и разрыва соединения (трёхстороннее рукопожатие, как в TCP). Отправитель просто формирует датаграмму и передаёт её IP-уровню для отправки. Получатель, если соответствующий порт открыт, принимает датаграмму и передаёт приложению. Если порт закрыт, датаграмма обычно отбрасывается, а отправителю может быть отправлено ICMP-сообщение «Port Unreachable».

Отсутствие гарантий

UDP не гарантирует:

  • Доставку — датаграмма может быть потеряна в сети без уведомления.
  • Порядок доставки — датаграммы могут приходить в порядке, отличном от отправленного.
  • Отсутствие дублирования — одна и та же датаграмма может быть доставлена несколько раз.
  • Целостность данных — контрольная сумма опциональна и не обеспечивает полной защиты от ошибок.

Эти свойства делают UDP «лёгким» и быстрым, но возлагают ответственность за надёжность на прикладной уровень.

Отличия от TCP

Основные различия между UDP и TCP:

ХарактеристикаUDPTCP
Тип соединенияБез установления соединенияС установлением соединения
Гарантия доставкиНетДа (подтверждения, повторная передача)
Упорядочивание данныхНетДа (порядковые номера)
Контроль потокаНетДа (скользящее окно)
Контроль перегрузкиНетДа (механизмы избегания перегрузки)
Заголовок8 байт20–60 байт
Нагрузка на сетьМинимальнаяВыше (подтверждения, таймеры)
ПрименениеПотоковые, реального времениФайловые, веб, почта

Применение

UDP используется в приложениях, где скорость и низкая задержка важнее надёжности, или где надёжность обеспечивается на более высоком уровне. Основные области:

Мультимедиа и потоковая передача

  • VoIP (голосовая связь по IP) — протоколы SIP, RTP поверх UDP.
  • ВидеоконференцииWebRTC, Skype, Zoom (частично).
  • Потоковое видеоIPTV, RTSP, некоторые реализации стриминга.
  • Аудиовещание — радиоинтернет-вещание.

В этих приложениях потеря отдельных пакетов допустима (приводит к кратковременным искажениям), а повторная передача вызвала бы недопустимые задержки.

Игры и интерактивные приложения

  • Многопользовательские онлайн-игры — передача состояния игрового мира, действий игроков.
  • Удалённый рабочий стол — протоколы VNC, RDP (частично).
  • Финансовые торговые системы — где важна минимальная задержка.

Сетевые протоколы и утилиты

  • DNS — запросы и ответы (обычно через UDP, порт 53).
  • DHCP — автоматическая настройка IP-адресов (порты 67/68).
  • NTPсинхронизация времени (порт 123).
  • SNMP — управление сетью (порты 161/162).
  • TFTP — простой протокол передачи файлов (порт 69).
  • Syslog — сбор журналов (порт 514).

Промышленные и встраиваемые системы

  • Протоколы IoT — CoAP, MQTT-SN.
  • Промышленная автоматизация — Modbus UDP, PROFINET.
  • Радио и спутниковая связь — где задержка критична.

Преимущества и недостатки

Преимущества

  • Низкая задержка — отсутствие установки соединения и подтверждений сокращает время передачи.
  • Малый накладной расход — заголовок всего 8 байт против 20+ у TCP.
  • Простота реализации — минимальные требования к ресурсам.
  • Поддержка широковещательной (broadcast) и групповой (multicast) рассылки — TCP не поддерживает multicast.
  • Отсутствие контроля потока — позволяет передавать данные с максимальной скоростью, доступной в сети.

Недостатки

  • Ненадёжность — потери, дублирование, нарушение порядка.
  • Отсутствие управления перегрузкой — может привести к перегрузке сети и вытеснению TCP-трафика.
  • Ограниченный размер датаграммы — при превышении MTU требуется фрагментация на IP-уровне.
  • Нет встроенного контроля целостности — контрольная сумма опциональна и не защищает от всех ошибок.

Безопасность

UDP не имеет встроенных механизмов безопасности. Уязвимости включают:

  • Подмена источника (spoofing) — легко подделать IP-адрес отправителя.
  • Амплификационные атаки (DDoS) — использование открытых UDP-сервисов (DNS, NTP, SSDP) для усиления трафика.
  • Флуд-атаки — отправка большого количества датаграмм на цель.
  • Отсутствие шифрования — данные передаются в открытом виде (если не используется DTLS или прикладное шифрование).

Для защиты применяются: DTLS (Datagram Transport Layer Security), IPsec, межсетевые экраны с фильтрацией UDP-портов, ограничение скорости (rate limiting).

История и развитие

Протокол UDP был разработан в 1980 году Дэвидом Ридом (MIT) и опубликован как RFC 768. Изначально предназначался для простых запрос-ответных протоколов (DNS, TFTP). С развитием интернета и появлением приложений реального времени (1990-е годы) UDP стал основой для RTP, VoIP и потокового видео.

В 2000-х годах появились расширения и альтернативы:

  • UDP-Lite (RFC 3828) — позволяет передавать частично повреждённые датаграммы.
  • UDPLite — используется в некоторых мультимедийных приложениях.
  • QUIC (Google, 2012, стандартизирован в 2021) — транспортный протокол поверх UDP, сочетающий низкую задержку UDP с надёжностью и безопасностью TCP. Используется в HTTP/3.
  • SCTP — протокол с частичным overlapped с UDP, но с установкой соединения.

На 2020-е годы UDP остаётся одним из основных транспортных протоколов интернета, особенно в области мультимедиа, игр и IoT.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →