Заголовок UDP содержит 4 поля.
Поле «порт отправителя» (16 бит) определяет порт на хосте отправителя, пославший пакет. В случае, если процесс-отправитель не ожидает от получателя никаких ответных данных, это поле может быть установлено в «0».
Поле «порт получателя» (16 бит) определяет порт на хосте получателя, которому предназначен данный пакет.
Поле «Длина пакета» (16 бит) содержит суммарный размер UDP-пакета в октетах. Минимально возможное значение этого поля равно 8 (т.к. 8 октетов занимает сам заголовок пакета).
Поле «контрольная сумма» имеет длину 16 бит.
Формат UDP-сегмента | ||
+ | Биты 0—15 | 16—31 |
Порт отправителя | Порт получателя | |
Длина пакета | Контрольная сумма | |
Данные |
Арифметически, максимальная длина UDP-пакета составляет 216-1 = 65535 октетов. Вычитая из этой длины размер заголовка (8 октетов), получаем максимальный размер данных, которые могут быть переданы в одном UDP пакете — 65527 октетов. Однако следует учесть, что UDP пакет является полезной нагрузкой IP пакета, в заголовке которого поле «Полная длина» также из 16 бит учитывает как заголовок IP, так и полезную нагрузку, которая как раз и является UDP-пакетом. IP заголовок, в общем случае, имеет переменную длину не менее 20 октетов. Таким образом, UDP-пакет с максимальной арифметической длиной обязательно будет фрагментирован или отброшен, если фрагментация запрещена.
Недостаточная надёжность протокола может выражаться как в потере отдельных пакетов, так и в их дублировании. UDP используется при передаче потокового видео, игр реального времени, а также некоторых других типов данных.
Ненадёжность протокола UDP надо понимать в том смысле, что в случаях влияния внешних факторов, приводящих к сбоям, протокол UDP не предусматривает стандартного механизма повторения передачи потерянных пакетов. В этом смысле он настолько же надежен, как и ICMP ECHO протокол.
Если приложению требуется большая надёжность, то используется протокол TCP или SCTP, либо реализуется какой-нибудь свой нестандартный алгоритм повторения передач в зависимости от условий.
UDP используется в следующих протоколах: DNS, RTP и RTCP, TFTP, SNTP, NTP.