UDP (User Datagram Protocol) — это неориентированный на соединение (connectionless) и ненадежный (unreliable) протокол транспортного уровня.
Основные особенности:
- Нет установления соединения (Connectionless): Отправитель сразу начинает передачу данных без предварительного "рукопожатия" с получателем. Это делает UDP быстрым.
- Ненадежная доставка (Unreliable Delivery): UDP не гарантирует доставку пакетов, их порядок и отсутствие дубликатов. Пакеты могут быть потеряны, прийти в другом порядке или продублироваться. Проверка ошибок минимальна (только контрольная сумма).
- Отсутствие контроля потока (No Flow Control): Отправитель может передавать данные с любой скоростью, не заботясь о возможностях принимающей стороны.
- Отсутствие контроля перегрузок (No Congestion Control): UDP не имеет механизмов для предотвращения или реагирования на перегрузки сети.
- Минимальный набор заголовков: Заголовок UDP значительно меньше заголовка TCP, что снижает накладные расходы.
Структура UDP-заголовка:
| Поле | Размер (байты) | Описание |
|---|
| Source Port | 2 | Порт отправителя (опционально) |
| Destination Port | 2 | Порт получателя |
| Length | 2 | Длина всего UDP-дейтаграммы |
| Checksum | 2 | Контрольная сумма (опционально) |
Применение UDP:
- Приложения, чувствительные ко времени: онлайн-игры, стриминг аудио/видео (RTP, RTCP).
- DNS (Domain Name System).
- DHCP (Dynamic Host Configuration Protocol).
- SNMP (Simple Network Management Protocol).
Несмотря на свою ненадежность, UDP подходит для приложений, где потери пакетов допустимы или обработка надежности реализуется на прикладном уровне, а скорость и низкая задержка критичны.