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 , Служба доменных имен).

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


1. Технический осмотр

UDP является одним из самых простых протоколов транспортного уровня модели OSI. Его подробное описание можно найти в IETF RFC 768. UDP обеспечивает очень простой интерфейс между сетевым и программным уровнями. UDP не гарантирует доставку сообщений, отправитель не запоминает состояние уже отправленных сообщений. По этой причине протокол UDP иногда расшифровывают как << Unreliable Datagram Protocol >> (протокол ненадежных дейтаграмм). Если на базе UDP нужно организовать надежную передачу данных, то для этого необходимо привлечь протоколы более высокого уровня.

Заголовок UDP конверта состоит из 4 полей, из которых 2 являются опциональными. "Порт отправителя "и "Порт получателя "- это 16-битные поля, идентифицирующих отправляющий и получающий процессы. "Порт отправителя" является необязательным, поскольку UDP работает без установления соединения и отправитель может не требовать ответа. В такой ситуации "порт отправителя" должен доривнюватися нулю. Поле "Размер" является обязательным, оно определяет длину всей UDP дейтаграммы в байтах, с полем "Данные" включительно. Минимальное значение этого поля равно 8 байт.

Последнее поле заголовка длиной 16 бит включает в себя контрольную сумму заголовка и поля данных. "Контрольная сумма" тоже является необязательным полем, но на практике оно почти всегда используется.

Программы, использующие UDP в качестве транспортного протокола, должны быть готовы к ошибкам, потере некоторых конвертов и повторной передачи данных. Некоторые программы, такие как TFTP, могут использовать дополнительные программные механизмы для повышения надежности передачи. Но в большинстве случаев, для программ надежность не является необходимым и может даже помешать замедлением связи. Потоковое видео, игры реального времени и VoIP (голос поверх IP) являются примерами программ, очень часто используют 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 , Протокол маршрутизации информации) и многие другие.


См.. также

2. Структура

пакета UDP является минимальным послать-ориентирован протокол Транспортного Шару, который документируется в IETF RFC 768.

, UDP не обеспечивает никаких гарантий к верхнему протокола слоя, потому поставки сообщения и UDP слой протокола не сохраняет никакого государства сообщений UDP однажды, послал. Поэтому, UDP иногда называется Ненадежный датаграммной Протокол. [3]

UDP обеспечивает прикладное мультиплексирования (через портовые номера) и верификацию (через контрольную сумму) целостности заголовка и полезного груза. [4] Если надежность передачи желательна, это должно осуществляться в приложении пользователя.

Биты 0-15 16-31
0 Начальный Номер Порту Номер Порту Назначение
32 Длина Контрольная сумма
64 + Дата

Заголовок UDP состоит из 4 полей, каждый из которого составляет 2 байта (16 бит). [1] Использование двое из необязательно в IPv4 (розовая подготовка в таблице). В IPv6 только начальный порт необязательный (посмотрите ниже).

Начальный номер порта

Это поле идентифицирует порт посилача, когда значимо и надо предусматриваться, чтобы быть портом, чтобы ответить, если надо. Если не использованы, то это должно быть нулевым. Если начальный узел - клиент, номер порта, вероятно, является эфемерным номером порта. Если начальный узел - сервер, номер порта, вероятно, является известным номером порта. [2]

Порт назначения

Это поле идентифицирует порт получателя и требуется. Подобный начального номера порта, если клиент - узел назначения затем номер порта вероятно будет эфемерным номером порта и если узел назначения - сервер затем номер порта вероятно будет известным номером порта. [2] Первые 64 бита (8 байт) датаграммы является UDP - заголовком, другими битами - эти сообщения: Длина

Поле, которое конкретизирует длину в байтах полной datagram: заголовок и данные. Минимальная длина составляет 8 байт каких это длина заголовка. Размер поля устанавливает, что теоретические ограничивают 65,535 байт (8 байтового заголовка 65,527 байт данных) для datagram UDP. Практические ограничивают, ибо длина данных, которую накладывает основной IPv4 протокол, составляет 65,507 байт (65,535 - 8 байт UDP заголовок - 20 заголовок байтовый IP). [2]

В IPv6 Jumbograms возможно иметь UDP пакеты размера, большего, чем 65,535 байт. [5] Это позволяет значение максимальной длины 4,294,967,295 байт (2 ^ 32 - 1) с 8 байтами, представляющих заголовок и 4,294,967,287 байт для данных.

Контрольная сумма Поле контрольной суммы использовано для error-checking заголовка и данных. Если никакой контрольной суммы не генерирует посилач, поле пользуется вполне-нулями значение. [6] Это поле не необязательно для IPv6. [7]


3. Сравнение UDP и TCP

Основная статья: Протокол Элемента управления Передачи Транспортного Уровня

  • - Ориентированный на соединение протокол, который означает, что это требует, чтобы процедура установления связи установила сквозные связи. Как только подключение установлено пользовательские данные, возможно, ссылается bi-directionally над подключением.
  • Надежный - TCP управляет подтверждением сообщения повторной передачей и таймаут. Множитель пытается доставить сообщение сделаны. Если это заблудился вдоль пути, сервер повторно пригласит часть потери. В TCP, там есть или нет недостающих данных, или, в случае множественных таймаутов, подключение упущенное.
  • Заказано - если два сообщения посылаются над подключением один за другим, первое сообщение достигнет получающего применение сначала. Когда сегменты данных прибывают в неправильное заказ, TCP буферизует out-of-order данные в все данные не могут быть должным образом повторно заказаны и доставлены применению.
  • Тяжеловес - TCP требует, чтобы три пакета установили подключения сокета, перед тем, как любые пользовательские данные смогут быть посланы. TCP обрабатывает надежность и элемент управления перегрузки.
  • Вытекающие - Данные вычитан как байтовый поток, никакие различая указания не передаются границам сигнального сообщение (сегмент).

UDP - то, что проще послать-базировал connectionless протокол. Connectionless протоколы не устанавливают отдано сквозное подключение. Коммуникации достигает передача информации в одном направлении от источника к адресату без подтверждения готовности и состояния получателя. Однако, одна первичная выгода от UDP над TCP - применение, чтобы выразить над протоколом (VoIP) межсетевого взаимодействия, где бы любая процедура установления связи препятствовала ясной голосовой коммуникации. Это предусматривается в VoIP UDP, что конечные пользователи обеспечивают любое необходимое реальное подтверждение времени что сообщение было получено.

  • Ненадежный - Когда сообщение послано, это не может быть известно, если это достигнет его адресата, он смог заблудиться вдоль пути. Нет никакого концепта подтверждения повторной передачи или таймаута.
  • Не заказывается - Если два сообщения отправлены тому же получателю, заказ, в котором они прибывают, не может быть предсказан.
  • Легкий вес - нет никакого упорядочение сообщений, никаких гончих подключений, и т.п. Это - маленький транспортный уровень, проектируемого в довершение IP.
  • Datagrams - Пакеты ссылаются индивидуально и является был отмечен для целостности, только если они прибывают. Пакеты имеют определенные границы, которые почитаются, означая, что операция чтения данных в сокете получателя приводить полное сообщение, поскольку это было сначала послано.
  • Нет элемента управления перегрузки - UDP непосредственно не избегает перегрузки, и возможно для высоких применений пропускной способности запустить коллапс перегрузки, если бы только они осуществляли элемент управления перегрузки взвешенный в прикладном уровне.

4. UDP

Биты 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

0-31 Порт посилача (Source port) Порт получателя (Destination port)

32-63 Длина датаграммы (Length) Контрольная сумма (Checksum) 64 - ... Данные (Data)

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

Максимальная длина данных Для вычисления максимальной длины данных в UDP - сообщении при передаче в IP сетях необходимо учесть, что UDP-сообщения в свою очередь является содержанием области данных IP - сообщение. Максимальная длина IP-сообщения (с учетом заголовка) равна 65535 октетов. Поэтому максимальная длина UDP - сообщение (за вычетом минимального IP - заголовка) равна 65535 - 20 = 65515 октетов. Длина заголовка UDP - сообщение равен 8 октетам, следовательно, максимальная длина данных в UDP - сообщении равна 65515 - 8 = 65507 октетов. На практике нерационально использовать максимальную величину IP пакета, поскольку такой размер превышает MTU основных протоколов канального уровня, и следовательно требует фрагментации IP пакета, поэтому обычно используется размер, соотнесен с MTU используемого канального протокола.

Октета IP - сообщение 65535 20 минимальных IP-заголовок 65515 Этих IP - сообщений: UDP - сообщение 8 UDP - заголовок 65507 Данные

Псевдозаголовок При вычислении контрольной суммы в UDP - датаграмма прилагается специальный псевдо-заголовок данным о получателе и посилача следующего формата: Биты 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

0-31 IP-адрес посилача (Source address)

32-63 IP-адрес получателя (Destination address)

64-95 0 0 0 0 0 0 0 0 Протокол (Protocol) Длина UDP - датаграммы (UDP length) Поле "протокол" содержит в себе значение 17 (00010001 в двоичном виде, 11 - в шестнадцатеричном) - идентификатор UDP-протокола. Поле "длина UDP-датаграммы" содержит в себе длину UDP-сообщения без псевдозаголовка в октетах, т.е. совпадает с одноименным полем в UDP-заголовке. Псевдозаголовок по сети не передается, для проверки контрольной суммы восстанавливается на хосте назначения используя данные из IP - и

Расчет контрольной суммы Перед расчетом контрольной суммы UDP-сообщение дополняется в конце нулевыми битами до длины, кратной 16 битами (псевдозаголовок и дополнительные нулевые биты не отправляются вместе с уведомлением). Поле контрольной суммы в UDP-заголовке при расчете контрольной суммы отправляемого, принимается нулевым. Для расчета контрольной суммы псевдозаголовок и UDP-сообщение разбивается на слова (1 слово = 2 байта (октета) = 16 бит). Затем рассчитывается поразрядное дополнение до единицы суммы всех слов с поразрядным дополнением. Результат записывается в соответствующее поле в UDP-заголовке. Нулевое значение контрольной суммы зарезервировано, и значит датаграмма не имеет контрольной суммы. В случае, если вычисленным контрольная сумма получилась равной нулю, поле заполняют двоичными единицами.

При получении сообщения получатель считает контрольную сумму заново (учитывая уже поле контрольной суммы), и, если в результате получится двоичное число из шестнадцати

Пример расчета контрольной суммы Для примера рассчитаем контрольную сумму нескольких 16-битных слов: 0x398a, 0xf802, 0x14b2, 0xc281. Находим их сумму с поразрядным дополнением. 0x398a 0xf802 = 0x1318c → 0x318d 0x318d 0x14b2 = 0x0463f → 0x463f 0x463f 0xc281 = 0x108c0 → 0x08c1

Теперь находим поразрядное дополнение до единицы полученного результата: 0x08c1 = 0000 1000 1100 0001 → 1111 0111 0011 1110 = 0xf73e или, иначе - 0xffff - 0x08c1 = 0xf73e. Это и есть искомая контрольная сумма.

Поля Если задействован порт посилача, то он указывает порт процесса, посылающего датаграмму. Можно принять, что это тот порт, на который при отсутствии какой-либо иной информации следует адресовать датаграмму в ответ. Если это поле не задействовано, то в него следует записать ноль. Порт получателя имеет смысл только в контексте конкретной Internet адреса получателя. Длина - длина в октетах этой датаграммы, включая как заголовок, так и данные (это означает, что минимальное значение поля длины равно восьми). Интерфейс протокола IP Модуль протокола UDP должен иметь возможность извлекать из Internet заголовка датаграммы Internet адреса посилача и получателя, а также тип протокола. Один из возможных интерфейсов UDP / IP мог бы возвращать в ответ на команду получения полную Internet датаграмму, включая Internet заголовок целиком. Такой интерфейс мог бы также позволить протоколу UDP передавать протоколу IP для посылки некоторую готовую Internet датаграмму вместе с заголовком.


5. External links