Если UDP не устанавливает соединение, как TCP ... кажется, единственный способ отслеживать соединения - это исходный IP / порт и целевой IP / порт. Это верно?
Итак, я предполагаю, что есть специальные пакеты для отказа в подключении и сброса подключения. Это правильно?
Кроме того, правда ли, что мои данные могут быть получены не в том порядке, в котором они были отправлены?
Ваш первый абзац правильный. Соединение отсутствует, хотя некоторые IP-механизмы используют адрес / порт источника и адрес / порт назначения для обеспечения приближения к состоянию на основе синхронности.
Отказ обрабатывается с помощью ICMP, часто ICMP порт недоступен (тип 3, подтип 3).
Ваш последний пункт тоже правильный; Ваше приложение должно обеспечить правильную последовательность передаваемых по UDP данных.
Здесь нет connection
в UDP. Это ненадежный протокол. Если требуется надежность передачи, она должна быть реализована в приложении пользователя. Посмотри на эта страница.
Да, пакеты могут приходить не по порядку и могут быть потеряны. При необходимости об этом позаботится приложение.
UDP также известен как протокол ненадежных данных. В UDP нет отслеживания как такового. Вы можете использовать комбинацию src и dst IP / Port для отслеживания, но не уверены, чего вы от этого добьетесь.
Ответ на ваш второй вопрос, что данные могут быть получены не в том порядке, в котором они были отправлены, является правильным. TCP использует порядковые номера. Если пакет получен не по порядку, он отбрасывается. Клиент отправляет отправителю подтверждение полученного упорядоченного пакета, после чего отправитель начинает отправлять данные с этого момента. Это также может включать повторную передачу некоторых пакетов. Таким образом TCP обеспечивает гарантию данных.
UDP - это служба, ориентированная на дейтаграммы. Каждый UDP-пакет должен иметь (в идеале!) Свой полный контекст в пакете, поскольку пакеты могут быть потеряны или переупорядочены в пути.
TCP, с другой стороны, является потоково-ориентированным протоколом, обеспечивающим двунаправленный поток между двумя конечными точками (это подразумевает надежность и последовательность, тогда как служба дейтаграмм не обязательно).