Протокол пользовательских датаграмм, или UDP, — это протокол транспортного уровня, который передает данные по IP-сетям с минимальными накладными расходами. Он позволяет приложениям отправлять небольшие блоки данных — датаграммы — без предварительного установления формального соединения.
В отличие от TCP, ориентированного на надежную доставку, порядок, повторную передачу и управление потоком, UDP создан для скорости, простоты и низкой задержки. Он применяется в связи реального времени, играх, видеопотоках, DNS, VoIP, IoT-телеметрии, обнаружении сети, VPN-туннелях и задачах, где быстрая передача важнее позднего восстановления.
Легкий способ передачи данных
UDP похож на отправку сообщения без подтверждения каждого шага получателем. Отправитель формирует датаграмму, добавляет порты источника и назначения и передает ее уровню IP.
Такая легкая схема делает UDP быстрым: нет рукопожатия перед передачей, встроенной повторной отправки при потере пакета и строгого требования к порядку доставки.
Компромисс состоит в том, что UDP сам не гарантирует доставку. Пакеты могут теряться, дублироваться, задерживаться или приходить не по порядку; надежность должна добавляться приложением.

Как работает поток датаграмм
Приложение создает полезную нагрузку
Процесс начинается, когда приложению нужно отправить данные: DNS-запрос, голосовой пакет, обновление игры, сегмент видео, показание датчика или сообщение обнаружения.
Поскольку UDP не ведет длинные сеансы как TCP, приложения могут быстро и многократно отправлять сообщения. Это полезно, когда новое обновление важнее восстановления старого.
Порты определяют службу
UDP использует номера портов, чтобы определить, какое приложение или служба должны получить датаграмму. Исходный порт указывает отправляющее приложение, а порт назначения указывает службу на принимающем узле.
Например, DNS обычно использует UDP-порт 53, а многие протоколы для голоса, видео, игр и пользовательских приложений используют собственные заданные диапазоны портов. Без портов принимающее устройство не понимало бы, какое приложение должно обработать входящие данные.
Добавляется заголовок
Добавляется заголовок показывает, что UDP передает большую часть контроля приложению, поэтому UDP, порты, NAT, контрольная сумма, заголовок необходимо проектировать внимательно.
Контрольная сумма помогает обнаруживать повреждение данных при передаче. Если датаграмма повреждена, получатель может отбросить ее, а не передавать неверные данные приложению. Однако сама проверка контрольной суммы не обеспечивает повторную передачу.
IP выполняет доставку по сети
После добавления заголовка UDP датаграмма передается уровню IP для доставки по сети. Маршрутизаторы пересылают пакет согласно адресу назначения и таблицам маршрутизации. UDP не знает и не управляет полным путем между отправителем и получателем.
Если возникают перегрузка, правила межсетевого экрана, проблемы маршрутизации, потеря пакетов или сбой сети, UDP не восстанавливается автоматически. Приложение должно решить, игнорировать ли отсутствующие данные, запросить ли копию, изменить качество или изменить поведение.
Почему некоторые приложения выбирают скорость
Во многих системах реального времени поздно доставленные данные менее полезны, чем потерянные. Во время голосового вызова пакет с фрагментом звука двухсекундной давности не должен внезапно воспроизводиться, когда разговор уже продолжился. В онлайн-игре старая информация о движении может уже не иметь значения, потому что игрок снова переместился.
Именно здесь проявляется ценность UDP. Он позволяет приложениям продолжать работу без ожидания повторной передачи на транспортном уровне. Приложение может использовать буферы джиттера, прогнозирование, маскировку потерь пакетов, прямую коррекцию ошибок или адаптивный битрейт для обработки несовершенной доставки.
Почему некоторые приложения выбирают скорость показывает, что UDP передает большую часть контроля приложению, поэтому UDP, TCP необходимо проектировать внимательно.
Ключевые характеристики
Работа без соединения
UDP не требует процедуры установления соединения перед отправкой данных. Отправитель может передать датаграмму сразу, если ему известны IP-адрес и порт назначения.
Это полезно для быстрых служб запрос-ответ, широковещательного обнаружения и приложений реального времени, где задержка установления соединения должна быть минимальной.
Нет встроенной гарантии доставки
Протокол не гарантирует, что датаграмма будет доставлена. Он также не гарантирует порядок пакетов и не предотвращает дублирование. Это может выглядеть как недостаток, но именно такая конструкция делает протокол простым и быстрым.
Приложения, которым нужна надежность, могут добавить подтверждения, номера последовательности, повторную передачу или отслеживание состояния в собственную логику протокола.
Низкие накладные расходы
Заголовок мал, а поведение протокола просто. Это уменьшает нагрузку на полосу пропускания и обработку. Для больших объемов небольших сообщений это может быть важным преимуществом.
Низкие накладные расходы показывает, что UDP передает большую часть контроля приложению, поэтому DNS, задержка необходимо проектировать внимательно.
Поддержка широковещания и многоадресной передачи
UDP может поддерживать широковещательную и многоадресную передачу в зависимости от конфигурации сети. Это позволяет одному отправителю эффективнее достигать нескольких получателей, чем при создании множества отдельных сеансов один-к-одному.
Многоадресная передача часто применяется в IPTV, обнаружении служб, протоколах маршрутизации, промышленных системах и некоторых схемах распространения медиа. Однако она должна поддерживаться коммутаторами, маршрутизаторами и сетевой политикой.
Гибкое управление на уровне приложения
Поскольку протокол обеспечивает только базовую доставку, приложения могут строить собственное поведение поверх него. Система потокового вещания может отдавать приоритет плавному воспроизведению. Игровой сервер может отдавать приоритет свежим обновлениям состояния. Сенсорная сеть может отдавать приоритет экономии батареи. VPN может создать собственный слой надежности и шифрования.
Эта гибкость является одной из причин, по которым UDP остается важным в современных сетях, несмотря на простую структуру.
UDP не стал ненадежным случайно. Он специально сделан минимальным, чтобы приложения могли сами выбирать баланс между скоростью, восстановлением и управлением.
Где UDP часто применяется
DNS-запросы
DNS-запросы показывает, что UDP передает большую часть контроля приложению, поэтому UDP, порты, DNS необходимо проектировать внимательно.
Если ответ слишком велик или этого требуют особые условия, DNS также может использовать TCP. Это показывает, что протоколы могут выбирать UDP ради скорости и при этом применять другие методы, когда меняются требования к надежности или размеру.
Голосовая и видеосвязь
VoIP-вызовы, видеоконференции, медиапотоки SIP, аудио RTP, сеансы WebRTC и конференции реального времени часто используют UDP для передачи медиа. Причина проста: живой звук и видео требуют малой задержки.
Если теряется несколько пакетов, приложение может скрыть потерю или немного снизить качество. Слишком долгое ожидание восстановления старых пакетов сделало бы разговор задержанным и неестественным.
Онлайн-игры
Игры часто отправляют частые обновления положения, движения, действий и состояния. Для игрового сервера последняя позиция игрока может быть важнее старого обновления, которое пришло с опозданием.
Разработчики игр часто добавляют собственный слой надежности для важных событий, таких как вход, инвентарь, состояние матча или покупки, а для движения в реальном времени используют быстрые датаграммы.
Потоковая передача и живые медиа
Потоковая передача и живые медиа показывает, что UDP передает большую часть контроля приложению, поэтому UDP, порты, видео, широковещание необходимо проектировать внимательно.
Для видео по запросу, где буферизация допустима, также часто может использоваться доставка на основе TCP. Лучший транспорт зависит от того, является ли поток живым, интерактивным или предварительно записанным.

IoT и данные датчиков
Многие устройства IoT отправляют небольшие отчеты о состоянии, показания датчиков, сообщения активности или управляющие сигналы. UDP полезен, когда устройствам нужна легкая связь без накладных расходов на поддержание большого числа соединений.
Однако системы IoT все равно должны учитывать надежность, безопасность и потери в сети. Критические тревоги, обновления прошивки и управляющие команды могут требовать более строгого подтверждения, чем обычная телеметрия.
VPN и туннельные протоколы
Некоторые VPN-технологии используют UDP, потому что он хорошо работает при переменных сетевых условиях и помогает избежать задержек, возникающих при вложении надежных протоколов друг в друга.
Когда VPN передает TCP-трафик внутри TCP-туннеля, механизмы повторной передачи иногда взаимодействуют неудачно. Туннелирование на основе UDP дает VPN-программе больше контроля над надежностью, шифрованием и временем передачи.
Обнаружение сети
Обнаружение сети показывает, что UDP передает большую часть контроля приложению, поэтому UDP, многоадресная передача, широковещание необходимо проектировать внимательно.
Это часто встречается в принтерах, умных устройствах, медиаустройствах, промышленном оборудовании и локальных системах обнаружения служб. Сегментация сети и правила межсетевого экрана могут влиять на работу обнаружения между подсетями.
Преимущества для разработчиков и сетей
Главное преимущество — низкая задержка. Поскольку нет рукопожатия соединения и обязательной повторной передачи, приложения могут быстро отправлять данные и поддерживать работу связи реального времени. Это полезно для голоса, видео, игр, телеметрии и управляющих сигналов, где важны сроки.
Еще одно преимущество — простота. UDP легко реализовать на транспортном уровне, а его легкая конструкция хорошо подходит для небольших сообщений. Это также полезно для встраиваемых систем, устройств с ограниченными ресурсами и простых служб запрос-ответ.
Масштабируемость тоже может быть преимуществом. Сервер может получать датаграммы от множества клиентов, не поддерживая такую же модель состояния соединения, как TCP. Это полезно для некоторых высоконагруженных служб, хотя проектирование на уровне приложения и безопасность по-прежнему важны.
Наконец, протокол дает разработчикам гибкость. Они могут выбирать, какие сообщения требуют подтверждения, какие можно отбросить, какие следует повторять и какие должны быстро устаревать. Это позволяет приложению согласовать транспортное поведение с реальными бизнес- или техническими потребностями.
Ограничения и риски
Потеря пакетов
Потеря пакетов показывает, что UDP передает большую часть контроля приложению, поэтому UDP, датаграммы, межсетевые экраны, перегрузка необходимо проектировать внимательно.
Для некритичных обновлений реального времени это может быть приемлемо. Для важных команд, транзакций или записей нужна дополнительная надежность.
Доставка не по порядку
Пакеты могут приходить в порядке, отличном от порядка отправки. Это возможно, когда пакеты идут разными сетевыми путями или сталкиваются с разными задержками.
Приложения, которым нужен порядок, должны включать номера последовательности или временные метки и решать, как переупорядочивать, отбрасывать или обрабатывать пакеты.
Нет контроля перегрузки по умолчанию
TCP включает управление перегрузкой, чтобы снижать скорость отправки при перегрузке сети. UDP не делает этого автоматически. Если приложение отправляет слишком агрессивно, оно может усилить перегрузку и потерю пакетов.
Ответственный дизайн приложения должен при необходимости включать управление скоростью, адаптивный битрейт, выравнивание темпа отправки или поведение с учетом перегрузки.
Проблемы с межсетевыми экранами и NAT
Проблемы с межсетевыми экранами и NAT показывает, что UDP передает большую часть контроля приложению, поэтому UDP, TCP, порты, NAT, межсетевые экраны необходимо проектировать внимательно.
Приложения часто используют сообщения keepalive, STUN, TURN, ICE или ретрансляционные службы, чтобы поддерживать связь через NAT и межсетевые экраны.
Риски безопасности
Поскольку UDP не устанавливает соединение, в некоторых сценариях злоумышленникам проще подделывать исходные адреса. Он также используется в некоторых атаках отражения и усиления, когда плохо защищенные службы отвечают на поддельные запросы.
Службы, использующие UDP, должны проверять запросы, ограничивать размер ответов, применять ограничения скорости, по возможности ограничивать доступ и использовать шифрование или аутентификацию при необходимости.
Методы надежности поверх UDP
Хотя сам протокол минимален, многие приложения добавляют функции надежности на более высоком уровне. Система медиа реального времени может использовать номера последовательности, временные метки, буферы джиттера, маскировку потерь пакетов и прямую коррекцию ошибок. Игровой протокол может повторно передавать только важные изменения состояния и игнорировать устаревшие обновления движения.
Некоторые современные транспортные технологии также строят расширенное поведение поверх UDP. Они могут обеспечивать шифрование, мультиплексирование потоков, управление перегрузкой и более быстрое установление соединения, продолжая использовать UDP как базовый транспорт. Это показывает, что протокол может быть гибкой основой для более сложных моделей связи.
Методы надежности поверх UDP показывает, что UDP передает большую часть контроля приложению, поэтому UDP, безопасность необходимо проектировать внимательно.
Практическое сравнение с TCP
TCP обычно выбирают, когда требуется полная и упорядоченная доставка. Загрузка файлов, веб-страницы, передача электронной почты, соединения с базами данных и многие бизнес-приложения требуют, чтобы данные приходили правильно и по порядку. TCP выполняет установление соединения, подтверждения, повторную передачу, упорядочивание и управление перегрузкой.
UDP выбирают, когда важнее скорость, временные характеристики или управление на уровне приложения. Аудио реального времени, живое видео, DNS-запросы, игровые обновления и телеметрия не всегда выигрывают от ожидания поздних повторных передач на транспортном уровне.
Ни один протокол не лучше во всех случаях. Они служат разным целям проектирования. Хорошо спроектированное приложение выбирает транспортное поведение, соответствующее типу данных, пользовательскому опыту, сетевым условиям и требованиям безопасности.
Советы по развертыванию и диагностике
При развертывании служб, использующих UDP, нужно подтвердить требуемые порты и протоколы. Открытие TCP-порта не разрешает автоматически UDP-трафик, даже если номер порта тот же. Межсетевые экраны, маршрутизаторы, облачные группы безопасности и локальные файрволы должны разрешать правильный протокол.
При необходимости тестируйте в обоих направлениях. UDP не устанавливает видимое соединение, как TCP, поэтому отсутствие ответа не всегда доказывает доступность службы. Захват пакетов, журналы приложений, счетчики на сервере и тестовые инструменты помогают подтвердить, доходят ли датаграммы.
Советы по развертыванию и диагностике показывает, что UDP передает большую часть контроля приложению, поэтому пакеты, задержка, джиттер необходимо проектировать внимательно.
В средах NAT следует проверять тайм-ауты отображений и поведение keepalive. Если сеанс работает недолго, а затем прекращается, устройство NAT может слишком быстро закрывать UDP-отображение.
Устранение неполадок UDP должно сосредоточиться на том, доходят ли пакеты, слушает ли приложение правильный порт, соответствуют ли правила межсетевого экрана протоколу и поддерживает ли качество сети временные требования приложения.
Лучшие практики безопасности
Не открывайте ненужные UDP-службы в публичный интернет. Неизвестные или неиспользуемые службы следует блокировать по умолчанию. Публичные службы нужно обновлять, мониторить и ограничивать по скорости.
Используйте аутентификацию и шифрование, если данные чувствительны или команды могут влиять на системы. UDP сам по себе не обеспечивает конфиденциальность, проверку личности или защиту от повторного воспроизведения.
Ограничивайте риск усиления. Службы не должны отправлять большие ответы на маленькие неаутентифицированные запросы, особенно в публичных сетях. Ограничение скорости и проверка источника помогают снизить злоупотребления.
Лучшие практики безопасности показывает, что UDP передает большую часть контроля приложению, поэтому датаграммы, порты, NAT необходимо проектировать внимательно.
FAQ
Можно ли шифровать UDP?
Да. Шифрование может быть добавлено поверх UDP протоколами или приложениями. Сам транспорт не шифрует данные, поэтому безопасность должна обеспечиваться другим уровнем.
Почему тесты UDP-портов иногда не дают ответа?
Многие UDP-службы не отвечают, если формат запроса неправильный. Отсутствие ответа может означать, что порт фильтруется, служба не слушает или тестовый пакет не содержит допустимых прикладных данных.
Работает ли UDP с IPv6?
Да. UDP может работать поверх IPv4 и IPv6. Поведение транспорта похоже, но адресация, правила межсетевого экрана и конфигурация сети могут отличаться.
Могут ли UDP-пакеты быть больше сетевой MTU?
Они могут быть фрагментированы на уровне IP, но фрагментация увеличивает риск потерь. Многие приложения делают датаграммы достаточно маленькими, чтобы избежать фрагментации.
Почему приложения реального времени часто допускают некоторую потерю пакетов?
Потому что ожидание старых данных создает задержку. Приложения реального времени часто предпочитают продолжать работу с самыми свежими данными и использовать маскировку, прогнозирование, буферизацию или адаптивное качество, чтобы уменьшить влияние потерь.