UDP: без соединения и гарантий
Как устроен UDP, чем платят за скорость и почему DNS, видео и игры выбирают его.
Датаграммы вместо потока
UDP не устанавливает соединение. Отправитель просто шлёт датаграмму на адрес и порт, без рукопожатия, без подтверждений, без повторов. Если датаграмма не дошла, UDP об этом даже не узнает.
Гарантий нет никаких: датаграмма может потеряться, прийти дважды или обогнать соседнюю. Если приложению важен порядок или доставка, оно разбирается с этим само.
Весь заголовок UDP — четыре поля по 16 бит: порт отправителя, порт получателя, длина, контрольная сумма. Сравни с TCP, где заголовок тянет номера, флаги, окна и опции.
Зачем такой транспорт нужен
За отсутствие гарантий UDP платит скоростью и простотой: нет рукопожатия, значит нет лишнего round-trip перед первым байтом; нет состояния соединения, значит сервер держит миллионы клиентов без таблицы соединений.
Кому это подходит:
- DNS: запрос и ответ умещаются в одну датаграмму, потерялась, и клиент просто спросит ещё раз;
- видео и звонки: опоздавший кадр бесполезен, переотправлять его как TCP нет смысла, проще показать следующий;
- онлайн-игры: важна свежая позиция игрока, а не история старых;
- QUIC (транспорт HTTP/3): работает поверх UDP и сам реализует надёжность, чтобы не зависеть от TCP в ядре.
# 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.
Дрилл · вопросы как на собесе
Проверь себя без подсказок
Сформулируй ответ вслух или письменно, потом раскрой и честно отметь: знал или нет.
Чем TCP отличается от UDP?
NET-005Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс