RFC 768. User Datagram Protocol (перевод)

Материал из wireshark.wiki

Введение

Протокол UDP используется для передачи данных с использованием дейтаграмм в компьютерных сетях с коммутацией пакетов. Данный протокол предполагает, что в качестве базового протокола используется протокол IP [1].

UDP предоставляет возможность обмена сообщениями между приложениями с помощью простого механизма. Протокол ориентирован на передачу данных, и не гарантирует доставку данных и защиту от появления дублированных данных. Приложения, которым требуется гарантированная доставка данных, а также доставка в заведомо верном порядке, должны использовать протокол TCP [2].

Формат заголовка

- 0 1 2 3
Октеты Биты 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–3 0–31 Порт отправителя (Source Port) Порт получателя (Destination Port)
4–7
32–63
Размер дейтаграммы (Length) Контрольная сумма (Checksum)
8–... 64–... Октеты с данными (Data octets)


Порт отправителя (Source port) – поле, которое используется для обозначения процесса отправителя дейтаграммы и является портом на который должен быть отправлен ответ в случае отсутствия другой информации. Поле является необязятельным. Для обозначения отсутствия значения используется порт номер ноль.

Порт получателя (Destination port) – поле, которое используется для обозначения процесса получателя дейтаграммы.

Размер дейтаграммы (Length) – размер дейтаграммы в октетах. При расчете размера учитываются и заголовок и октеты с данными. Минимальный значение этого поля равно восьми.

Контрольная сумма (Checksum) – контрольная сумма высчитываемая на основе значений UDP-заголовка, UDP-псевдозаголовка и данных. Если количество октетов с данными не кратно двум, то при расчете контрольной суммы выполняется виртуальная добивка октетов с данными нулями до получения количества октетов кратного двум. Алгоритм вычисления контрольной суммы идентична тому, который используется в TCP.

Псевдозаголовок - виртуальный блок, предшествующий UDP-заголовку, содержащий информацию о IP-адресе отправителя, IP-адресе получателя, используемом протоколе и размере UDP-дейтаграммы.

- 0 1 2 3
Октеты Биты 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–3 0–31 IP-адрес отправителя (Source Address)
4–7
32–63
IP-адрес получателя (Destination Address)
8–... 64–... Нули (Zero) Протокол (Protocol) Размер UDP-дейтаграммы (UDP length)

Если полученная контрольная сумма равна нулю, то все биты соответствующего поля указываются как равные единицам. Контрольная сумма, равная нулю, считается как не указанная контрольная сумма.

Пользовательский интерфейс

Интерфейс пользователя должен предоставлять следующие возможности:

  • Создание новых портов для приема данных.
  • Получение данных на портах приема, возвращающие данные в виде октетов и указывающие исходный порт и исходный адрес (receive operations on the receive ports that return the data octets and an indication of source port and source address,),
  • Отправку данных с указанием данных, портов отправителя и получателя, а также IP- адресов.

IP-интерфейс

UDP-модуль должен распознавать IP-адреса отправителя и получателя и значение поля "Протокол" из IP-заголовка. Любой интерфейс UDP/IP должен уметь возвращать полную дейтаграмму, включая весь IP-заголовок, в ответ на операцию приема. Такой программный интерфейс UDP передать полную IP-дейтаграмму, включая заголовок, для отправки через IP. IP должен проверять согласованность значений полей и вычислять контрольную сумму IP-заголовка.

Применение протокола

Основными сферами применения протокола UDP являются серверы интернет имен [3] и протокол TFTP [4].

Номер протокола

Для обозначения протокола UDP в протоколе IP используется номер 17 (21 в восьмеричной системе счисления). Другие номера протоколов приведены в [5].

Ссылки

[1] Postel, J., "Internet Protocol," RFC 760, USC/Information Sciences Institute, January 1980.

[2] Postel, J., "Transmission Control Protocol," RFC 761, USC/Information Sciences Institute, January 1980.

[3] Postel, J., "Internet Name Server," USC/Information Sciences Institute, IEN 116, August 1979.

[4] Sollins, K., "The TFTP Protocol," Massachusetts Institute of Technology, IEN 133, January 1980.

[5] Postel, J., "Assigned Numbers," USC/Information Sciences Institute, RFC 762, January 1980.