UDP-«соединения» для передачи данных

В этом разделе описаны UDP-соединения для передачи данных (текущий Transport Protocol (TP) [настройка / параметр ] = 0).

Понятие соединения естественно для TCP/IP, поскольку это протокол, ориентированный на соединение. UDP/IP, напротив, не ориентирован на соединение: все пакеты (UDP-датаграммы) независимы друг от друга. Как тогда понятие «соединение данных DS» применяется к транспортному протоколу UDP?

При транспортном протоколе UDP настоящих соединений данных (в смысле TCP) не существует, поэтому слово «соединение» взято в кавычки. DS, однако, по возможности повторяет поведение TCP-соединения. Ниже подробно описаны UDP-«соединения», их сходства и отличия от TCP-соединений.

Входящие «соединения»*. В UDP фазы установления соединения нет, поэтому входящее UDP-«соединение» считается установленным, когда DS получает от узла сети первую UDP-датаграмму на порт, заданный настройкой Data Port Number (PN). Сходство с TCP в том, что, получив пакет от узла сети, DS знает, куда отправлять свои UDP-датаграммы. [V3.24/3.54]: Если текущий Source IP Filtering [настройка /параметр ] равен 1 (включено), DS игнорирует UDP-датаграммы, приходящие с любого IP-адреса, кроме совпадающего с текущим Destination IP-address (DI) [настройка /параметр /инструкция ] (если только Destination IP-address не задан как 255.255.255.255 - см. широковещательные UDP-обмены).

Исходящие «соединения»**. DS устанавливает исходящее UDP-«соединение», отправляя UDP-датаграмму на целевой адрес (заданный текущим Destination IP-address (DI) [настройка /параметр /инструкция ] и текущим Destination Data Port (DP) [настройка /параметр /инструкция ]). Если DS нужно передать узлу сети данные, первая UDP-датаграмма содержит (часть) этих данных. Если немедленно передать нечего, DS отправляет первую UDP-датаграмму нулевой длины. Это происходит, когда настройка Connection Mode (CM) равна 0 (подключаться сразу). Цель такой датаграммы - сообщить другой стороне MAC-адрес, IP-адрес и порт данных DS.

Передача данных и переключение адреса назначения. Когда «соединение» установлено, DS и узел сети могут обмениваться данными. Отличие от TCP в том, что если другой узел сети отправит датаграмму на DS, DS расценит это как новое входящее «соединение», забудет IP-адрес первого узла сети и начнёт отправлять свои UDP-датаграммы на IP-адрес второго узла сети. Иначе говоря, DS всегда отправляет свои UDP-датаграммы на IP-адрес «последнего отправителя». Исключение - случай, когда *текущий Destination IP-address** равен 255.255.255.255 - см. широковещательную передачу UDP.

Порт, на который DS адресует свои UDP-датаграммы, устроен несколько сложнее и зависит от текущего Routing Mode (RM) [настройка / параметр ]:

  • Когда текущий Routing Mode равен 0 (server), DS отправляет свои UDP-датаграммы на номер порта, с которого пришла последняя входящая датаграмма с данными. Иначе говоря, DS переключается не только на IP-адрес последнего отправителя, но и на номер порта, с которого пришла последняя UDP-датаграмма.
  • Когда текущий Routing Mode равен 1 (server/client) или 2 (client), DS всегда отправляет свои UDP-датаграммы на порт, заданный текущим Destination Data Port (DP) [настройка/параметр/инструкция]. Это значит, что даже при переключении на IP-адрес последнего отправителя DS по-прежнему адресует свои UDP-датаграммы на порт данных, заданный текущим Destination Data Port.

Завершение «соединения». В UDP фазы завершения соединения нет, поэтому DS «завершает» свои UDP-«соединения», просто «забывая» о них. Единственное событие, которое может завершить UDP-«соединение», - тайм-аут соединения (задаётся настройкой Connection Timeout (CT)).

* При условии, что входящие соединения разрешены (то есть текущий Routing Mode [настройка /параметр ] равен «server» или «server/client»), И [V3.24/3.54]: текущий Source IP Filtering [настройка /параметр ] равен 0 (выключено).

** При условии, что исходящие соединения разрешены (то есть текущий Routing Mode [настройка /параметр ] равен «client» или «server/client»).