Могут ли клиенты OPCUA отправлять сообщения HELLO порциями?

Я использую клиент Prosys Opcua в качестве тестового клиента для своего сервера. . Согласно спецификации OPCUA, клиент должен отправить пакет HEL на сервер, после чего сервер подтвердит прием клиента, и поток будет продолжаться до момента установления соединения.

Я заметил, что клиент prosys отправляет сообщение HELLO порциями, он отправляет HE, затем L и продолжает отправлять байты, пока пакет HELLO не будет завершен.

Я считаю такое поведение ненормальным, и я не вижу нигде в спецификации, где говорится, что сообщение HELLO может быть передано кусками.

Когда я использую других клиентов, сообщение HELLO отправляется в виде одного пакета.

Ниже приведен снимок для wireshark, показывающий пакеты, отправленные клиентом prosys, я выделил приветственный пакет, окончательный привет содержит только URL-адрес конечной точки, все остальные атрибуты сообщения HELLO отправляются над пакетом HELLO. введите здесь описание изображения

Это стандартное поведение? если да, то в какой части спецификации об этом упоминается?


person salimsaid    schedule 29.07.2019    source источник


Ответы (1)


Насколько я знаю, это соответствует требованиям, хотя и неоптимально. Отображение OPC UA TCP не касается того, как сообщения разбиваются на сетевые пакеты. Почему? Это низкоуровневая деталь. Другие протоколы, основанные на TCP, также не имеют значения (например, HTTP).

Ни в одной части спецификации UA это не должно упоминаться как «разрешенное», потому что нет причин, по которым это не должно быть разрешено — это просто свойство некоторого базового протокола, и OPC UA не может предписывать, чтобы базовые протоколы вели себя иначе, чем их стандарты.

Обратите внимание, что вы написали «...передается кусками». Просто для ясности: «фрагменты», которые вы наблюдаете, представляют собой IP-пакеты, несущие TCP-сегменты. Они не являются «фрагментами сообщений», которые описаны в OPC UA Part 6 (Mappings) — они не могут быть таковыми, поскольку они применяются к протоколу безопасного диалога UA, а сообщение Hello отправляется до того, как этот протокол начнет использоваться.

person ZbynekZ    schedule 29.07.2019
comment
это имеет смысл; поскольку в спецификации упоминается, что первым запросом от клиента должно быть сообщение HELLO, допустимо ожидать сообщения HELLO от клиента, даже если пакеты отправляются сразу или порциями. - person salimsaid; 29.07.2019