UDP — быстро и без лишних церемоний
Самый простой транспортный протокол. Он почти ничего не добавляет к IP — и именно поэтому так полезен.
- что такое порт и зачем он нужен транспортному уровню;
- как устроена датаграмма UDP;
- почему отсутствие гарантий иногда лучше, чем их наличие.
4.1Порты: как данные находят нужную программу
IP доводит пакет до устройства, но на устройстве одновременно работают десятки программ: браузер, мессенджер, игра. Чтобы понять, кому из них предназначены данные, транспортный уровень использует порты — числа от 0 до 65 535.
| Диапазон | Название | Для чего |
|---|---|---|
| 0 – 1023 | Системные (общеизвестные) | Закреплены за стандартными службами: 80 — HTTP, 443 — HTTPS, 53 — DNS, 22 — SSH. |
| 1024 – 49 151 | Зарегистрированные | Используются конкретными приложениями: 3306 — MySQL, 5432 — PostgreSQL, 3389 — удалённый рабочий стол. |
| 49 152 – 65 535 | Динамические | Операционная система выдаёт их программам- клиентам на время одного соединения. |
Сервер слушает заранее известный порт, а клиент при подключении получает случайный временный. Пара «IP-адрес + порт» называется сокетом. Каждое соединение однозначно определяется пятью значениями: протокол, адрес и порт отправителя, адрес и порт получателя. Поэтому вы можете открыть один и тот же сайт в десяти вкладках — у каждой будет свой порт отправителя, и ответы не перепутаются.
4.2Как устроен UDP
UDP (User Datagram Protocol) добавляет к данным заголовок всего из четырёх полей общей длиной 8 байт:
| Поле | Размер | Назначение |
|---|---|---|
| Порт отправителя | 2 байта | Куда присылать ответ |
| Порт получателя | 2 байта | Какой программе предназначены данные |
| Длина | 2 байта | Размер заголовка вместе с данными |
| Контрольная сумма | 2 байта | Проверка, что данные не исказились в пути |
Одно сообщение UDP называют датаграммой. Отправка выглядит предельно просто: программа формирует датаграмму и сразу отдаёт её в сеть. Никакой предварительной договорённости с получателем нет — поэтому говорят, что UDP работает без установления соединения.
4.3Чего UDP не делает
- Не подтверждает доставку. Отправитель не знает, дошла ли датаграмма.
- Не повторяет потерянное. Пропало — значит пропало.
- Не следит за порядком. Датаграммы могут прийти вперемешку.
- Не регулирует скорость. Отправитель может слать быстрее, чем получатель или сеть успевают обработать.
Звучит как список недостатков, но у медали есть обратная сторона: нет рукопожатия — нет задержки перед первой отправкой; нет повторов — нет «подвисаний» из-за одного потерянного пакета; маленький заголовок — меньше накладных расходов. Если приложению нужны какие-то гарантии, оно реализует их само и ровно в том объёме, который ему нужен.
Диктор в прямом эфире не останавливается и не повторяет фразу, если у вас на секунду пропал звук. Повтор всё равно пришёл бы слишком поздно и только сбил бы трансляцию. Лучше потерять слово, чем отстать от эфира.
4.4Где применяется UDP
| Применение | Почему UDP |
|---|---|
| DNS-запросы | Один короткий вопрос и один короткий ответ. Устанавливать соединение ради этого дольше, чем сам обмен. |
| Голосовые и видеозвонки | Важна минимальная задержка. Потерянные 20 миллисекунд звука незаметны, а пауза на повторную передачу — заметна. |
| Онлайн-игры | Устаревшие координаты игрока бесполезны: проще дождаться следующего обновления, чем повторять старое. |
| DHCP, NTP | Короткие служебные обмены; у DHCP вдобавок в момент запроса ещё нет IP-адреса для полноценного соединения. |
| QUIC и HTTP/3 | Современный транспорт, который строит поверх UDP собственные, более гибкие гарантии (об этом — модуль 8). |
| VPN-тоннели | Внутри тоннеля уже работает TCP со своими повторами. Дублировать их снаружи вредно, поэтому тоннель выгоднее строить на UDP. |