UDP-пакет

UDP-пакет
UDP
Название:

User Datagram Protocol

Уровень (по модели OSI):

Транспортный

Семейство:

TCP/IP (иногда называют UDP/IP)

Порт/ID:

17 (в IP)

Спецификация:

RFC 768 / STD 6

Основные реализации (клиенты):

Ядро Windows, Linux, UNIX

Основные реализации (серверы):

Ядро Windows, Linux, UNIX

Расширяемость:

нет

UDP (англ. User Datagram Protocol — протокол пользовательских датаграмм) — это транспортный протокол для передачи данных в сетях IP без установления соединения. Он является одним из самых простых протоколов транспортного уровня модели OSI. Его

В отличие от Unreliable Datagram Protocol (протокол ненадёжных датаграмм). Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных.

Содержание

Состав UDP-датаграммы

Первые 64 бита (8 октетов) датаграммы представляют собой 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-сообщении необходимо учесть, что UDP-сообщение в свою очередь является содержимым области данных IP-сообщения. Максимальная длина IP-сообщения (с учетом заголовка) равна 65535 октетов. Потому максимальная длина UDP-сообщения (за вычетом минимального IP-заголовка) равна 65535 − 20 = 65515 октетов. Длина заголовка UDP-сообщения равна 8 октетам, следовательно, максимальная длина данных в UDP-сообщении равна 65515 − 8 = 65507 октетов. На практике сообщения максимальной длины не используются — ограничиваются 8192 октетами данных.

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

Псевдозаголовок

UDP-заголовок не содержит информации об адресе отправителя и получателя, поэтому даже при совпадении порта получателя нельзя с точностью сказать, что сообщение пришло в нужное место. Для проверки того, что 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 в двоичном виде, 0x11 — в шестнадцатеричном) — идентификатор UDP-протокола. Поле «длина UDP-датаграммы» содержит в себе длину UDP-сообщения (UDP-заголовок + данные; длина псевдозаголовка не учитывается) в октетах, то есть совпадает с одноименным полем в UDP-заголовке.

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

Расчет контрольной суммы

Перед расчетом контрольной суммы UDP-сообщение дополняется в конце нулевыми битами до длины, кратной 16 битам (эти нулевые биты не отправляются вместе с сообщением). Поле контрольной суммы в UDP-заголовке во время расчета контрольной суммы отправляемого сообщения принимается нулевым.

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

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

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

Пример расчета контрольной суммы

Для примера расчитаем контрольную сумму нескольких 16-битных слов: 0x398a, 0xf802, 0x14b2, 0xc281. Находим их сумму с поразрядным дополнением:

0x398a + 0xf802 = 0x1318c = 0x318d ;
0x318d + 0x14b2 = 0x463f ;
0x463f + 0xc281 = 0x108c0 = 0x08c1 .

Теперь находим поразрядное дополнение до единицы полученного результата:

0x08c1 = 0000 1000 1100 0001 → 1111 0111 0011 1110 = 0xf73e или, проще — 0xffff − 0x08c1 = 0xf73e.

Это и есть искомая контрольная сумма.

Использование

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

Ненадёжность протокола UDP надо понимать в том смысле, что в случаях влияния внешних факторов, приводящих к сбоям, протокол UDP не предусматривает стандартного механизма повторения передачи потерянных пакетов. В этом смысле он настолько же надежен, как и протокол TCP или

UDP используется в следующих протоколах:

См. также

Ссылки


Wikimedia Foundation. 2010.

Смотреть что такое "UDP-пакет" в других словарях:

  • UDP — Название: User Datagram Protocol Уровень (по модели OSI): Транспортный Семейство: TCP/IP (иногда называют UDP/IP) Порт/ID: 17 (в IP) Спецификация: RFC 768 / STD 6 Основ …   Википедия

  • UDP Lite — (облегченный UDP)  протокол без установки соединения, весьма похожий на UDP. В отличие от UDP, в котором защищены контрольной суммой (checksum) или все пакеты или ни один из них, UDP Lite допускает возможность частичных контрольных сумм,… …   Википедия

  • Пакет (сетевые технологии) — В компьютерных сетях пакет  это определённым образом оформленный блок данных, передаваемый по сети в пакетном режиме. Компьютерные линии связи, которые не поддерживают пакетный режим, как, например, традиционная телекоммуникационная связь… …   Википедия

  • Пакет IPv6 — IPv6 пакет (англ. IPv6 packet)  блок информации, форматированный для передачи через компьютерные сети, поддерживающие протокол IPv6. Пакеты состоят из управляющей информации, необходимой для доставки пакета адресату и полезных данных,… …   Википедия

  • Сканер портов — У этого термина существуют и другие значения, см. Сканер. Сканер портов  программное средство, разработанное для поиска хостов сети, в которых открыты нужные порты. Эти программы обычно используются системными администраторами для проверки… …   Википедия

  • traceroute — Traceroute  это служебная компьютерная программа, предназначенная для определения маршрутов следования данных в сетях TCP/IP. Traceroute может использовать разные протоколы передачи данных в зависимости от операционной системы устройства.… …   Википедия

  • Traceroute — это служебная компьютерная программа, предназначенная для определения маршрутов следования данных в сетях TCP/IP. Traceroute основана на протоколе ICMP. Графический интерфейс к traceroute в gnome nettool в Ubuntu 6.10 …   Википедия

  • IPsec — (сокращение от IP Security) набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, позволяет осуществлять подтверждение подлинности и/или шифрование IP пакетов. IPsec также включает в себя протоколы для… …   Википедия

  • IPv6 — Название: Internet Protocol version 6 Уровень (по модели OSI): Сетевой Семейство: TCP/IP Назначение протокола: Адресация Спецификация: RFC 2460 Основные реализации (клиенты) …   Википедия

  • SCTP — (англ. Stream Control Transmission Protocol «протокол передачи с управлением потоком»), протокол транспортного уровня в компьютерных сетях, появившийся в 2000 году в IETF. RFC 4960 описывает этот протокол, а RFC 3286 содержит техническое… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»