Основы «соединения» UDP

Что такое UDP

Во многом протокол пользовательских датаграмм (User Datagram Protocol, UDP) - противоположность TCP. Если TCP обеспечивает надёжную потоковую передачу, то UDP отправляет данные отдельными пакетами, или «датаграммами». Это похоже на «пейджинг» (отправку сообщения на «пейджер» - помните такие?). Отправляется пакет с некоторыми данными. Нет гарантии, что другая сторона его получит, а отправитель не узнает, дошёл пакет или нет.

Каждая датаграмма UDP живёт своей жизнью: вы сами отвечаете за разбиение данных на фрагменты разумного размера и отправку их отдельными датаграммами. В UDP нет установки и завершения соединения - датаграмму можно отправить сразу, без всякой подготовки.

В отличие от TCP, UDP не является протоколом «точка-точка». Например, несколько хостов могут отправлять датаграммы на один сокет вашего устройства, и все они могут быть приняты - при TCP такое невозможно. Есть и возможность разослать датаграмму всем хостам, подключённым к тому же сегменту сети, - при TCP это тоже невозможно.

А теперь о «соединениях» UDP...

После сказанного может показаться неожиданным, что мы развернёмся на 180 градусов и заговорим о «соединениях» UDP. Разве мы только что не сказали, что их нет? И да, и нет. В физической сети их действительно нет. Однако на уровне объекта sock. мы намеренно сделали связь по UDP более похожей на соединения TCP. А поскольку «соединение» UDP - не более чем абстракция объекта sock., слово «соединение» мы берём в кавычки.

Считается, что активное открытие выполнено, когда наш хост отправил первую датаграмму UDP получателю. Пассивное открытие - это когда мы получили первую входящую датаграмму UDP от другого хоста (при условии, что эта датаграмма была принята; подробнее в разделе Приём входящих соединений).

Для соединений UDP плавного разъединения нет. Соединение можно только отбросить (наш хост о нём «забывает»). Соединение UDP также может быть закрыто по тайм-ауту.

Исходный материал Tibbo обновлён 9 августа 2022Оригинал на docs.tibbo.com · Сообщить об ошибке