Wireshark是强大的网络协议分析工具,而open62541也是基于socket的,所以也可以用其来观察OPCUA通信消息。


一 安装Wireshark

https://www.wireshark.org/去下载并安装Wireshark,这里选择Windows 64位安装包,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_wireshark


下载后直接安装就行了,安装完要重启下电脑。


二 使用

1)开启OPCUA过滤器

打开Wireshark,打开"编辑"->“首选项”,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_Wireshark_02


然后展开Protocol,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_Wireshark如何在虚拟机中_03


往下拉找到OpcUa,如下,注意右侧的端口号,需要和OPCUA服务器的端口号一致,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_Wireshark_04


然后点击OK就行了。

2)观察消息

需要选择网络接口,由于本人的OPCUA服务器是运行在虚拟机里的,所以选择虚拟机对应的接口,如下,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_服务器_05


PS:如果是本地局域网,那么就使用loopback那个接口;如果不确定哪个接口对应自己的虚拟机,可以把鼠标悬停在接口名上,会显示ip地址,根据地址就可以知道需要的接口了。双击就进入观察窗口了,在过滤的地方输入opcua然后回车,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_服务器_06


此时在虚拟机里开启server,然后在Windows下打开UaExpert连接服务器,此时就可以在Wireshark里看到很多消息了。

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_Wireshark_07


在UaExpert这边,把ServiceLevel拖到中间的DataAccess View窗口,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_服务器_08


可以看到其值为255,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_Wireshark如何在虚拟机中_09


此时在Wireshark这边,可以看到相关的消息,即创建订阅和监测项,然后就是发送publish请求,此时server会给一个publish请求的回应,即下图中选中的那一行,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_服务器_10

双击打开这一行,展开如下,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_学习_11


下面是原始通信数据,上面是解析后的信息,此时展开OpcUa Binary Protocol,如下,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_Wireshark如何在虚拟机中_12


接着展开NotificationData,如下,可以看到和UaExpert这边观察到的值是一样的,

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_Wireshark_13


注意,由于这个变量值一直是255,所以只能在第一次的回应中看到其值,后面的回应里都没有值,这是因为监测项只有在变量值发生变化时才通知clientPS:当点击解析信息里的某项时,在下面的原始数据栏里会自动选中对应的字节,非常方便!

Wireshark如何在虚拟机中 虚拟机wireshark怎么用_服务器_14


同理,当client发送其它请求,如read/write,也可以使用Wireshark进行观察,可以帮助我们进行debug,来确保程序写的是否正确。