UDP-протокол: что это, как работает и для чего нужен

1920x1080 Как работает UDP-протокол.png

Современные сети работают благодаря протоколам, которые обеспечивают обмен данными между устройствами. Одним из таких протоколов является UDP. В отличие от TCP, другого широко используемого транспортного протокола, UDP не требует подтверждения получения данных пользователем и не контролирует доставку пакетов. Это делает его особенно полезным в ситуациях, где приоритет отдается скорости, а не надежности, например, во время видеозвонков. В этой статье рассмотрим принцип работы UDP и область его применения.

Разбирая устройство сети и сетевые термины, невозможно обойти стороной ключевую концепцию — эталонную модель OSI. Она описывает, как передаются данные между устройствами в локальных и глобальных сетях. Углубляться в модель не будем, лишь напомним читателю, что она включает 7 уровней, на каждом из которых действует свой протокол. Эти протоколы обеспечивают преобразование условных электрических сигналов в конечный результат — условное изображение на экране устройства.

Модель OSI — DDoS-Guard

Вернемся к транспортным протоколам — UDP, которому посвящен этот материал, и TCP, о котором поговорим в следующих. Оба работают на четвертом уровне (L4) модели OSI, но решают похожие задачи разными способами.

UDP передает данные в виде отдельных датаграмм, не устанавливая соединение и не используя «трехстороннее рукопожатие», как TCP. Благодаря этому он быстрее и проще: заголовок у него короче, а контроль доставки отсутствует.

TCP, напротив, требует подтверждения установки соединения перед передачей данных. Если говорить упрощенно, TCP — это про надежность и порядок, а UDP — про скорость и минимальные задержки. О том, как это влияет на пользовательский опыт и в каких сферах применяется, поговорим далее.

Датаграммы — самостоятельные пакеты информации, передаваемые протоколом через сеть связи без предварительного установления соединения.  

IP-датаграмма — это основная единица передачи данных в сети. UDP использует их для доставки своих пакетов. Каждая IP-датаграмма содержит: заголовок с адресами отправителя и получателя, управляющую информацию и полезную нагрузку, в которой может быть UDP-пакет.

UDP использует IP для передачи данных от одного устройства к другому, что позволяет сокращать задержки между отправкой и получением пакетов. IP-пакеты содержат информацию о порте назначения, источнике и длине самого пакета. Когда IP-пакеты достигают места назначения, UDP не отправляет сигнал, чтобы показать, что пакет прибыл на место назначения, а останавливает их отправку.

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

Если в поисковой строке браузера вбить запрос о размере UDP-пакета, то ответ будет следующий — 64 КБ или 65 535 байт. Максимальный размер UDP-датаграммы действительно составляет 65 535 байт (8 байт заголовка и 65 527 байт данных). Однако при отправке через сетевую карту пакет будет фрагментирован, так как максимальный размер блока данных в одном пакете (MTU) обычно составляет 1500 байт.

Структура IP-пакета — DDoS-Guard

Заголовок UDP имеет фиксированную длину в 64 бита (8 байт) и состоит из следующих полей:​  
Порт отправителя — указывает номер порта приложения отправителя. ​

  • Порт получателя — определяет номер порта получателя, на который должно быть доставлено сообщение.​
  • Длина — обозначает общую длину датаграммы UDP, включая заголовок и данные. Минимальное значение этого поля — 8 байт, что соответствует длине только заголовка без данных.​
  • Контрольная сумма — используется для проверки целостности данных.
  • Полезная нагрузка — содержит данные, передаваемые с использованием протокола UDP. 

Содержание UDP-протокола — DDoS-Guard

DNS-сервер — «телефонная книга» интернета, которая помогает находить нужные сайты пользователям. Когда вы вводите домен, например, ddos-guard.ru, DNS сверяется со своей информацией, которая представлена в виде уникальных номеров — IP-адресов. Они выглядят как набор цифр с точками — 123.123.123.123. Таким образом каждое доменное имя соответствует своему уникальному набору цифр. 

1. Запрос DNS через UDP

Вы хотите перейти на сайт, например, ddos-guard.ru, и ваш компьютер должен узнать его IP-адрес. Для этого он отправляет DNS-запрос.

2. DNS-запрос

Ваш компьютер создает DNS-запрос с использованием UDP. Запрос указывает доменное имя (например, ddos-guard.ru) и запрашивает его разрешение в IP-адрес.

3. Передача через интернет

Запрос отправляется по сети через маршрутизаторы, проходя через различные хосты, такие как локальные DNS-серверы. Если ваш компьютер не может сразу найти нужный IP, то пакет UDP с запросом направляется к DNS-серверу, DNS-сервер получает запрос, извлекает имя домена, ищет его в базе данных и формирует ответ с соответствующим IP-адресом.

4. Ответ от DNS-сервера

Ответный пакет также будет использовать UDP, структура останется аналогичной.  
В ответном пакете указано имя домена и его соответствующий IP-адрес (например, 185.178.210.88 для ddos-guard.ru).

5. Получатель (ваше устройство)

Вы получаете ответ от DNS-сервера, который извлекает IP-адрес из полезной нагрузки и может использовать его для установления соединения с веб-сервером. Для обычного пользователя весь этот процесс занимает несколько секунд и выглядит как загрузка нужного сайта. 

Как работает UDP-протокол.jpg

UDP-трафик — это поток данных, передаваемых по UDP-протоколу. Такой трафик характерен для приложений, где важна скорость передачи, а не гарантированная доставка. Например:

  • Стриминговые сервисы 
  • Онлайн-игры
  • Видеозвонки
  • DNS-запросы 

Некоторые приложения, такие как веб-браузеры или протоколы маршрутизации (например, BGP), полагаются на TCP как на гарантированный протокол передачи данных. На уровне L7 модели OSI они не контролируют, была ли информация доставлена, но полностью доверяют механизму надежной передачи TCP.

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

В отличие от этого, в UDP, например в при передаче голосовой информации, пакет отправляется, и его успешная доставка – это уже забота получателя. В результате, если часть пакетов теряется, связь может «квакать», но не зависать на 10 секунд в ожидании повторной отправки данных. Это критично для сервисов реального времени, где важнее поддерживать поток информации, чем гарантировать ее 100% доставку.

Хороший пример – банковская транзакция: при переводе денег между банками необходимо удостовериться, что удаленная сторона получила данные и подтвердила операцию. Без этого деньги не спишутся – это TCP.

UDP же можно сравнить с передачей денег за проезд водителю через пассажиров в автобусе: отправил – и надеешься, что они дойдут, но гарантии нет.

Как правило, UDP-протокол применяется в ситуациях, где особенно важна скорость передачи, а не надежная доставка данных.

Гарантированная доставка важна, когда:

  • Потеря информации может привести к сбоям, ошибкам или поломке системы.
  • Приложение зависит от того, чтобы вся информация была доставлена в правильном порядке, без потерь.
  • Задержка в обработке пакетов неприемлема — каждый пакет должен быть доставлен, и потеря одного может повлиять на всю работу.

Отсутствие гарантии доставки важно, когда:

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

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

UDP не гарантирует: 

  • Доставку пакетов до получателя.
  • Сохранение порядка пакетов.
  • Контроль потерь.

Но зато он обеспечивает:

  • Минимальные задержки.
  • Простоту и скорость реализации.