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

Протокол UDP

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

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

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

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

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

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

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

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

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

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

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

Отличия от TCP

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

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

Применение

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

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

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

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

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

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

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

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

Недостатки

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

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

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

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

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

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

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

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

На главную BFOmetr →