← Сеть: основы
10 мин · просто · Урок 8 из 13

UDP: без соединения и гарантий

Как устроен UDP, чем платят за скорость и почему DNS, видео и игры выбирают его.

Датаграммы вместо потока

UDP не устанавливает соединение. Отправитель просто шлёт датаграмму на адрес и порт, без рукопожатия, без подтверждений, без повторов. Если датаграмма не дошла, UDP об этом даже не узнает.

Гарантий нет никаких: датаграмма может потеряться, прийти дважды или обогнать соседнюю. Если приложению важен порядок или доставка, оно разбирается с этим само.

Весь заголовок UDP — четыре поля по 16 бит: порт отправителя, порт получателя, длина, контрольная сумма. Сравни с TCP, где заголовок тянет номера, флаги, окна и опции.

Зачем такой транспорт нужен

За отсутствие гарантий UDP платит скоростью и простотой: нет рукопожатия, значит нет лишнего round-trip перед первым байтом; нет состояния соединения, значит сервер держит миллионы клиентов без таблицы соединений.

Кому это подходит:

# DNS-запрос уходит по UDP на порт 53
$ dig +short izidevops.com @1.1.1.1
5.35.11.49

Как проверить UDP-порт

С TCP всё просто: SYN либо примут, либо ответят RST. У UDP ответа «порт открыт» нет. Если порт закрыт, придёт ICMP port unreachable; если открыт, чаще всего тишина.

$ nc -uz -w2 10.0.0.5 514; echo $?
0        # тишина: порт либо открыт, либо пакеты молча дропают

Поэтому «проверить UDP-порт телнетом» не получится, а сканеры помечают UDP-порты как open|filtered: отличить открытый порт от съеденного файрволом пакета нельзя.

Что важно запомнить

UDP шлёт независимые датаграммы: без соединения, подтверждений и повторов.

Заголовок из четырёх полей: два порта, длина, контрольная сумма.

Нет гарантий доставки, порядка и дедупликации: это забота приложения.

DNS, видео, игры и QUIC выбирают UDP ради низкой задержки и отсутствия состояния.

Закрытый UDP-порт отвечает ICMP port unreachable, открытый обычно молчит.

В следующем уроке — ICMP: на чём работают ping и traceroute.

Дрилл · вопросы как на собесе

Проверь себя без подсказок

Сформулируй ответ вслух или письменно, потом раскрой и честно отметь: знал или нет.

01

Чем TCP отличается от UDP?

NET-005

Прошли материал до конца? Отметьте урок пройденным.