UDP (User Datagram Protocol) — простой протокол. Заголовок UDP содержит четыре поля: порт источника, порт назначения, длину и контрольную сумму. UDP не гарантирует доставку данных на транспортном уровне. Приложение отвечает за повторные передачи в случае потери сегментов.
Однако некоторые приложения, например, приложения реального времени, не нуждаются в повторной передаче. Потеря части фразы в конференции не требует повторной отправки, так как разговор продолжается. В таких приложениях UDP предпочтительнее TCP.
Анализ UDP-сегментов в Wireshark
Найдём и проанализируем UDP-сегменты с помощью Wireshark. Запустим новый захват (например, отключив и включив сетевую карту). В фильтре отображения укажем «udp». Остановим захват.
Рассмотрим пакеты протокола DHCP, работающего поверх UDP. Видим запрос DHCP после получения компьютером IP-адреса от DHCP-сервера.
Структура запроса включает заголовок Ethernet, заголовок IPv4, и внутри IPv4 — UDP.
Заголовок UDP содержит четыре поля: порт источника (68), порт назначения (67), длину (заголовок UDP плюс данные) и контрольную сумму. Данные — это запрос DHCP. Обратите внимание на порты: источник — 68, назначение — 67.
Анализ ответа DHCP-сервера
Ответ сервера отправляется с порта 67 на порт 68. Он содержит длину, контрольную сумму и данные DHCP (подтверждение DHCP). UDP используется, так как нет необходимости устанавливать TCP-соединение для одного запроса IP-адреса.
Использование UDP в DNS-запросах
UDP используется для DNS-запросов. Укажем в фильтре «dns». Выберем один из DNS-запросов. Видим UDP в заголовке IPv4. Заголовок UDP содержит: порт источника (случайный порт), порт назначения (53 — порт DNS), длину и контрольную сумму. Данные — это запрос DNS. Ответ от сервера идёт с порта 53 на локальный порт, использованный в запросе.
Сравнение UDP и TCP в DNS
UDP используется в DNS, так как обычно отправляется один запрос и один ответ. Нет необходимости устанавливать и закрывать TCP-сессию. Использование TCP потребовало бы минимум семь сегментов: три для установления соединения, три для его закрытия и один для данных. Это неэффективно по сравнению с двумя UDP-сегментами. Для некоторых протоколов UDP быстрее и не требует установления соединения.
UDP — быстрый и эффективный протокол, подходящий для приложений без необходимости гарантированной доставки данных. Его простота и низкие накладные расходы делают его хорошим выбором для DHCP и DNS.