В отличие от TCP, UDP не гарантирует доставку пакета, поэтому аббревиатуру иногда расшифровывают как «Unreliable Datagram Protocol» (протокол ненадёжных датаграмм). Это позволяет ему гораздо быстрее и эффективнее доставлять данные для приложений, которым требуется большая пропускная способность линий связи, либо требуется малое время доставки данных.
Для взаимодействия сетевых приложений протокол UDP использует 16-ти битные порты, которые могут принимать значения от 0 до 65535. Порт 0 является зарезервированным, но может использоваться как порт источника, если приложение не ожидает ответных данных.
Порты с 1 по 1023 являются системными и фиксированными, во многих ОС привязка к ним требует повышенных привилегий приложения.
Порты с 1024 по 49151 — зарегистрированные.
Порты с 49152 по 65535 — свободно используемые и временные. Используются клиентскими приложениями для связи с серверами.
Заголовок UDP содержит 4 поля.
Поле «порт отправителя» (16 бит) определяет процесс на хосте отправителя, пославший пакет. В случае, если процесс-отправитель не ожидает от получателя никаких ответных данных, это поле может быть установлено в «0».
Поле «порт получателя» (16 бит) определяет процесс на хосте получателя, которому предназначен данный пакет.
Поле «Длина пакета» (16 бит) содержит суммарный размер UDP-пакета в октетах. Минимально возможное значение этого поля равно 8 (т.к. 8 октетов занимает сам заголовок пакета).
Поле «контрольная сумма» имеет длину 16 бит.
Формат UDP-сегмента + Биты 0—15 16—31
0 Порт отправителя Порт получателя
32 Длина пакета Контрольная сумма
64
Данные
Очевидно, что максимальная длина UDP-пакета составляет 216-1 = 65535 октетов. Вычитая из этой длины размер заголовка (8 октетов), получаем максимальный размер данных, которые могут быть переданы в одном пакете — 65527 октетов.
Недостаточная надёжность протокола может выражаться как в потере отдельных пакетов, так и в их дублировании. UDP используется при передаче потокового видео, игр реального времени, а также некоторых других типов данных.
Если приложению требуется большая надёжность, то используется протокол TCP или SCTP.
|