Открыть сервис

RFC 768

RFC 768 — это документ, опубликованный в 1980 году в серии «Request for Comments», определяющий протокол UDP (User Datagram Protocol) — один из основных транспортных протоколов стека TCP/IP. Данный протокол обеспечивает простую и ненадёжную доставку дейтаграмм между приложениями в компьютерных сетях, работающих поверх IP.

История

Протокол UDP был разработан Дэвидом П. Ридом (David P. Reed) в 1980 году как часть проекта ARPANET — предшественника современного Интернета. В то время потребность в протоколах передачи данных росла по мере развития сетевых технологий. TCP, разработанный ранее (RFC 793), предлагал надёжную передачу с установлением соединения, но для некоторых приложений, таких как потоковое аудио или DNS-запросы, издержки TCP (установка соединения, подтверждения, повторные передачи) были избыточны. RFC 768 ввёл лёгкий альтернативный протокол без установления соединения, ориентированный на скорость и минимальный накладной расход.

Документ был зарегистрирован как STD 6 в системе стандартов IETF (Internet Engineering Task Force) и остаётся действующим стандартом по сей день.

Характеристики протокола

Основные принципы

Заголовок UDP

Заголовок UDP состоит из 4 полей по 2 байта каждое (всего 8 байт):

  1. Порт источника (Source Port) — (необязательно) порт отправителя; если не используется, заполняется нулями.
  2. Порт назначения (Destination Port) — порт получателя, обязательное поле.
  3. Длина (Length) — длина всей дейтаграммы (заголовок + данные) в байтах. Минимальное значение — 8 (пустой заголовок).
  4. Контрольная сумма (Checksum) — опциональный код для проверки целостности заголовка и данных. Расчёт применяется к псевдозаголовку IP (включая IP-адреса) и полному UDP-пакету. В IPv4 это поле может быть нулевым, если проверка не выполняется; в IPv6 (RFC 2460) контрольная сумма обязательна.

Поле данных может иметь длину от 0 до 65 507 байт (максимальный IP-пакет 65 535 минус 20 байт IP-заголовка минус 8 байт UDP-заголовка). Однако в реальности ограничения MTU (Maximum Transmission Unit) часто уменьшают этот размер.

Применение

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

Службы, построенные поверх UDP

Мультимедиа и игры

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

IoT и сенсорные сети

Протокол CoAP (Constrained Application Protocol) поверх UDP используется в устройствах с ограниченными ресурсами (интернет вещей).

Сравнение с TCP

ХарактеристикаUDPTCP
Установление соединенияНетДа (трёхэтапное рукопожатие)
НадёжностьНетДа (подтверждения, повторные передачи)
Сохранение порядкаНетДа (сегменты упорядочиваются)
Контроль потока и перегрузокНетДа (скользящее окно, алгоритмы)
Накладной расходМалый (8 байт)Большой (20 байт заголовка + служебные данные)
Границы сообщенийСохраняютсяНе сохраняются (потоковый)
ИспользованиеСкорость/низкая задержкаНадёжность/целостность

UDP не имеет встроенных механизмов контроля перегрузок, что в некоторых сценариях может приводить к несправедливому использованию полосы пропускания по сравнению с TCP. Для решения этой проблемы в современных системах применяются адаптивные алгоритмы на уровне приложений или специализированные протоколы (например, QUIC поверх UDP, который добавляет надёжность и контроль перегрузок).

Критика и ограничения

Несмотря на свою эффективность, UDP страдает от ряда уязвимостей:

Интересные факты

См. также

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →