User Datagram Protocol, UDP (рус. Протокол дейтаграмм пользователя) - один из протоколов в стеке TCP/IP. От протокола TCP он отличается тем, что работает без подключения. UDP - это один из самых простых протоколов транспортного уровня модели OSI, который выполняет обмен дейтаграммам без подтверждения и гарантии доставки. При использовании протокола UDP обработка ошибок и повторная передача данных должна выполняться протоколом высшего уровня. Но, несмотря на все недостатки, протокол UDP является эффективным для серверов, которые посылают небольшие ответы большому количеству клиентов.
Протокол UDP используют такие сервисы и протоколы высшего уровня:
- TFTP (англ. Trivial File Transfer Protocol , простой протокол передачи файлов).
- SNMP (англ. Simple Network Management Protocol , простой протокол управления сетью).
- DHCP (англ. Dynamic Host Configuration Protocol , протокол динамической конфигурации узла),
- DNS (англ. Domain Name System , служба доменных имен).
Также этот протокол может использоваться для различных сетевых игр реального времени, потокового видео и аудио, других типов данных.
Технический обзор
UDP обеспечивает очень простой интерфейс между сетевым и программным уровнями. UDP не гарантирует доставку сообщений, и отправитель не запоминает состояние уже отосланных сообщений. По этой причине протокол UDP иногда расшифровывают как «Unreliable Datagram Protocol» (протокол ненадежных дейтаграмм). Если на базе UDP надо организовать надежную передачу данных, то для этого необходимо привлечь протоколы более высокого уровня.
Заголовок UDP конверта состоит из 4 полей, из которых 2 являются опциональными. «Порт отправителя» и «порт получателя »- это 16-битные поля, идентифицирующие, отправляющие и получающие процессы. «Порт отправителя» является необязательным, поскольку UDP работает без установления соединения и отправитель может не нуждаться в ответе. В такой ситуации «порт отправителя» должен равняться нулю. Поле «Размер» обязательно, оно определяет длину всей UDP дейтаграммы в байтах, с полем «Данные» включительно. Минимальное значение этого поля равно 8 байт.
Последнее поле заголовка длиной 16 бит включает в себя контрольную сумму заголовка и поля данных. "Контрольная сумма" тоже является необязательным полем, но на практике оно почти всегда используется.
Программы, использующие UDP в качестве транспортного протокола, должны быть готовы к ошибкам, потере некоторых конвертов и повторной передачи данных. Некоторые программы, такие как TFTP , могут использовать дополнительные программные механизмы для повышения надежности передачи. Но в большинстве случаев, для таких программ, надежность не является необходимой. Потоковое видео, игры реального времени и VoIP являются примерами программ, которые очень часто используют UDP. Если же программа требует высокого уровня надежности, то может использоваться такой протокол как TCP, с помощью которой можно находить ошибки при передаче данных.
Поскольку в протоколе UDP отсутствует какой-либо контрольный механизм предотвращения перегрузки, сетевые механизмы должны иметь средства для уменьшения эффекта потенциальных перегрузок от большого, неконтролируемого потока UDP-трафика. Говоря иначе, поскольку UDP-отправители не способны выявлять перегруженность, сетевые элементы, такие как роутеры, использующие «очереди конвертов» и «отвержение конвертов», остаются единственным инструментом для приостановления чрезмерного UDP-трафика. DCCP (англ. Datagram Congestion Control Protocol , протокол контроля нагруженности дейтаграмм) был создан как частичное решение этой проблемы. Он контролирует нагрузку на конечных узлах высокоскоростных потоков UDP-трафика, например, потокового видео.
Хотя количество UDP трафика в типичной сети достигает лишь нескольких процентов, однако многие важные программы используют UDP. Среди них: DNS (Domain Name System, служба доменных имен), SNMP (англ. Simple Network Management Protocol , простой протокол управления сетью), DHCP (англ. Dynamic Host Configuration Protocol , протокол динамической конфигурации узла), RIP (англ. Routing Information Protocol , протокол маршрутизации информации) и многие другие.