Введение

Основной протокол, используемый для передачи дейтаграмм по IP-сети.

В компьютерных сетях протокол пользовательских дейтаграмм (UDP) является одним из основных коммуникационных протоколов семейства протоколов Интернет, используемых для отправки сообщений (передаваемых в виде дейтаграмм в пакетах) другим хостам в сети Интернет-протокола (IP). В IP-сети UDP не требует предварительной установки каналов связи или маршрутов передачи данных. UDP использует простую модель связи без установления соединения с минимальным набором протокольных механизмов. UDP обеспечивает контрольные суммы для обеспечения целостности данных и номера портов для адресации различных функций в источнике и пункте назначения дейтаграммы. Он не предусматривает процедур согласования соединения и, следовательно, подвергает пользовательскую программу любой ненадежности базовой сети; не гарантируется доставка, порядок следования или защита от дублирования. Если на уровне сетевого интерфейса необходимы средства коррекции ошибок, приложение может вместо этого использовать протокол управления передачей (TCP) или протокол управления потоком передачи (SCTP), которые разработаны для этой цели. UDP подходит для задач, где проверка и коррекция ошибок либо не требуются, либо выполняются на уровне приложения; UDP позволяет избежать дополнительных затрат на такую обработку в стеке протоколов. Приложения, чувствительные ко времени, часто используют UDP, поскольку потеря пакетов предпочтительнее ожидания пакетов, задержанных из-за повторной передачи, что может быть неприемлемо в системах реального времени. Протокол был разработан Дэвидом П. Ридом в 1980 году и формально определен в .

Атрибуты

UDP — это простой протокол транспортного уровня, ориентированный на сообщения, который описан в. Хотя UDP обеспечивает проверку целостности (с помощью контрольной суммы) заголовка и полезной нагрузки, он не предоставляет никаких гарантий протоколу верхнего уровня относительно доставки сообщений, и уровень UDP не сохраняет состояние UDP-сообщений после их отправки. По этой причине UDP иногда называют ненадежным протоколом дейтаграмм. Если требуется надежная передача, она должна быть реализована в пользовательском приложении. Ряд характеристик UDP делает его особенно подходящим для определенных приложений. Он ориентирован на транзакции и подходит для простых протоколов запроса-ответа, таких как система доменных имен или протокол сетевого времени. Он предоставляет дейтаграммы, подходящие для моделирования других протоколов, таких как IP-туннелирование или удаленный вызов процедур, а также сетевая файловая система. Он прост и подходит для начальной загрузки или других целей, не требующих полного стека протоколов, например, DHCP и протокол тривиального обмена файлами. Он является протоколом без сохранения состояния, что делает его подходящим для работы с очень большим количеством клиентов, например, в приложениях потокового мультимедиа, таких как IPTV. Отсутствие задержек, связанных с повторной передачей, делает его подходящим для приложений реального времени, таких как Voice over IP, онлайн-игры и многие протоколы, использующие протокол Real Time Streaming. Благодаря поддержке многоадресной рассылки (multicast) он подходит для широковещательной информации, например, во многих системах обнаружения служб и обмена данными, таких как протокол точного времени и протокол маршрутизации.

Надежность и контроль загруженности

Не обладая надежностью, UDP-приложения могут столкнуться с потерей пакетов, изменением порядка их доставки, ошибками или дублированием. При использовании UDP, конечному пользователю необходимо самостоятельно реализовать механизмы подтверждения, например, подтверждение получения сообщения в реальном времени. Приложения, такие как TFTP, могут добавлять базовые механизмы обеспечения надежности непосредственно в прикладной уровень по мере необходимости. Некоторые VPN-системы, такие как OpenVPN, могут использовать UDP и выполнять проверку ошибок на уровне приложения, обеспечивая при этом надежные соединения. QUIC – это транспортный протокол, построенный на основе UDP. QUIC обеспечивает надежное и безопасное соединение. HTTP/3 использует QUIC, в отличие от более ранних версий HTTPS, которые используют комбинацию TCP и TLS для обеспечения надежности и безопасности соответственно. Это означает, что HTTP/3 использует единый процесс установления соединения, вместо двух отдельных процессов для TCP и TLS, что сокращает общее время установления соединения.

Сравнение UDP и TCP

Протокол управления передачей является протоколом с установлением соединения и требует процедуры согласования для организации связи между конечными точками. После установления соединения пользовательские данные могут передаваться в обоих направлениях. Надежность – TCP управляет подтверждением получения сообщений, повторной передачей и временем ожидания. Предпринимается несколько попыток доставки сообщения. Если данные теряются при передаче, они будут повторно отправлены. В TCP либо все данные доставляются, либо, в случае многократных истечений времени ожидания, соединение разрывается. Упорядоченность – Если два сообщения отправляются по соединению последовательно, первое сообщение достигнет принимающего приложения первым. Когда сегменты данных приходят не по порядку, TCP буферизует их до тех пор, пока все данные не будут правильно упорядочены и доставлены приложению. Тяжеловесность – TCP требует трех пакетов для установления сокетного соединения перед отправкой каких-либо пользовательских данных. TCP обеспечивает надежность и контроль перегрузки. Потоковый режим – Данные считываются как поток байтов, без каких-либо специальных индикаторов, обозначающих границы сообщений (сегментов). Протокол пользовательской датаграммы – это более простой протокол без установления соединения, основанный на сообщениях. Протоколы без установления соединения не создают выделенное соединение между конечными точками. Связь осуществляется путем передачи информации в одном направлении от отправителя к получателю без проверки готовности или состояния получателя. Ненадежность – При отправке сообщения UDP невозможно узнать, достигнет ли оно пункта назначения; оно может быть потеряно при передаче. Концепции подтверждения получения, повторной передачи или времени ожидания отсутствуют. Отсутствие упорядоченности – Если два сообщения отправлены одному и тому же получателю, порядок их получения не гарантируется. Легковесность – Отсутствует упорядочивание сообщений, отслеживание соединений и т.д. Это очень простой транспортный уровень, построенный поверх IP. Датаграммы – Пакеты отправляются по отдельности и проверяются на целостность при получении. Пакеты имеют четкие границы, которые соблюдаются при приеме; операция чтения в приемном сокете возвращает полное сообщение, как оно было первоначально отправлено. Отсутствие контроля перегрузки – Сам по себе UDP не предотвращает перегрузку. Меры по контролю перегрузки должны быть реализованы на уровне приложения или в сети. Широковещательные рассылки – Поскольку UDP не требует установления соединения, он может выполнять широковещательные рассылки, отправляя пакеты, которые могут быть приняты всеми устройствами в подсети. Мультикаст – Поддерживается режим работы мультикаст, при котором один пакет данных может быть автоматически маршрутизирован без дублирования группе подписчиков.