UDP — протокол датаграммного транспорта¶
UDP (англ. User Datagram Protocol, «пользовательский протокол датаграмм») — транспортный протокол компьютерных сетей, работающий поверх IP и предоставляющий приложениям минимальный, «ненадёжный» обмен датаграммами без установления соединения. Вместе с TCP UDP образует основу транспортного уровня модели TCP/IP. Протокол описан в стандарте RFC 768 (1980 год), автор — Джон Постел. UDP не гарантирует доставку, порядок или дублирование датаграмм, но минимизирует накладные расходы и задержку, что делает его предпочтительным для задач, чувствительных к времени.
¶Общие сведения
UDP относится к транспортному уровню модели TCP/IP (уровень 4 модели OSI). Он предоставляет процессам-приложениям возможность отправлять сообщения (датаграммы) друг другу без предварительного установления соединения — в отличие от TCP, использующего трёхстороннее рукопожатие. Отправитель просто формирует датаграмму и передаёт её в IP-слой; приёмник, если датаграмма дошла, получает её без подтверждения.
Ключевые свойства UDP:
- отсутствие установления соединения;
- отсутствие гарантий доставки и порядка пакетов;
- отсутствие встроенной контрольной суммы на уровне приложения (хотя заголовок UDP содержит простую контрольную сумму);
- мультиплексирование портами;
- минимальные накладные расходы.
¶Формат заголовка
Заголовок UDP состоит из восьми байт и содержит четыре поля по два байта:
| Поле | Размер | Назначение |
|---|---|---|
| Source Port | 16 бит | номер порта отправителя (может быть нулевым) |
| Destination Port | 16 бит | номер порта получателя |
| Length | 16 бит | длина заголовка и данных в байтах |
| Checksum | 16 бит | контрольная сумма (заголовка и данных, с псевдозаголовком IP) |
Поле Length включает сам заголовок (8 байт), поэтому минимальное значение — 8. Контрольная сумма в UDP необязательна в IPv4 (может быть равна нулю), но обязательна в IPv6. Псевдозаголовок IP, включаемый в расчёт контрольной суммы, гарантирует, что датаграмма не была искажена при маршрутизации.
¶Сравнение с TCP
| Характеристика | UDP | TCP |
|---|---|---|
| Установление соединения | нет | да (рукопожатие) |
| Гарантия доставки | нет | да |
| Порядок пакетов | не гарантируется | гарантируется |
| Контроль перегрузки | нет | да |
| Размер заголовка | 8 байт | минимум 20 байт |
| Накладные расходы | минимальные | существенные |
| Битовые флаги | нет | есть |
¶Применение
UDP используется там, где важнее скорость и задержка, чем гарантированная доставка, либо где прикладной протокол сам реализует нужные гарантии.
¶DNS
Система доменных имён использует UDP для большинства запросов на порту 53. Короткие запрос-ответ укладываются в одну датаграмму, что обеспечивает быстрое разрешение имён. При ответах размером более 512 байт (или при необходимости) клиент переходит на TCP.
¶Стриминг и VoIP
Протоколы IP-телефонии (SIP, RTP) и потокового вещания (HLS, MPEG-DASH поверх UDP, WebRTC) предпочитают UDP, поскольку повторная передача устаревших аудио- или видеоданных бессмысленна: опоздавший пакет заменяется более новым.
¶Игры
Сетевые компьютерные игры активно применяют UDP для передачи позиций и состояний, где задержка критичнее потерь.
¶DHCP и служебные протоколы
DHCP (порты 67/68), NTP (порт 123), SNMP (порт 161) и ряд других служебных протоколов работают поверх UDP.
¶QUIC
Протокол QUIC, разработанный в Google и ставший основой HTTP/3, построен поверх UDP. Он реализует в пользовательском пространстве надёжную доставку, шифрование и контроль перегрузки, сохраняя преимущества UDP по обходу проблем middlebox-ов.
¶Ограничения
UDP не защищает от потерь, дублирования и переупорядочивания датаграмм. Решение этих проблем возлагается на прикладной уровень. В сетях с жёсткими правилами файрволов UDP-трафик может блокироваться или дропаться чаще TCP. Отсутствие контроля перегрузки у «жадных» UDP-приложений способно ухудшать состояние сети, что компенсируется механизмами вроде LEDBAT или прикладными алгоритмами.
¶См. также
- TCP
- IP
- QUIC
- DNS
- RTP
¶Источники
- RFC 768. User Datagram Protocol (J. Postel, 1980)
- RFC 1122. Requirements for Internet Hosts (1989)
- Куроленков В. П. Сети связи и интернет. — М.: Горячая линия — Телеком
- Таненбаум Э., Уэзеролл Д. Компьютерные сети. — СПб.: Питер
