Wireshark接收UDP多播程序包,但不订阅客户端应用程序吗?

时间:2019-03-29 09:47:56

标签: raspberry-pi udp wireshark multicast open62541

说明

我目前正在尝试在树莓派上发布时间戳,并在基于Windows的PC上订阅它们。为此,我将Raspberry Pi和Windows PC都连接到了Switch。因此,如果我在Raspberry Pi上启动发布示例,我已经可以在Windows PC的Wireshark中看到传入的UDP多播包。因此,从理论上讲,订阅应用程序也应该能够接收软件包并将其打印到控制台。但事实并非如此。订阅样本不会向控制台输出任何时间戳,这意味着它不会接收任何UDP多播包。 这是为什么?如果我在Windows PC上同时运行“发布和订阅”示例,那么它将起作用...

我可能有一个线索可能是问题所在:如果我在Windows pc上运行发布/订阅示例,它们都将在控制台中打印出来,它们正在监听opc.tcp:// mypc:4801 / 但是,当我在raspi上运行发布示例时,它说的是在opc.tcp:// raspberrypi:4840 /上监听,但是订阅示例仍在opc.tcp:// mypc:4801 /上监听。

有什么建议吗?防火墙可能是这里的问题吗? 任何建议都将受到高度赞赏!

其他信息

在下图中,您可以看到rapiberry pi的IP地址: enter image description here

下面您可以在Wireshark中查看传输的UDP多播包。它们确实来自树莓派,因为IP地址匹配: enter image description here

1 个答案:

答案 0 :(得分:0)

可能有很多事情使您的数据报无法到达应用程序:

以太网帧少于64个字节

大多数NIC将在数据链路层填充数据,因此这可能不是问题。 Wireshark将无法看到这种情况的发生。要进行验证,请尝试自己填充数据有效负载(例如0xFF),直到数据包的数据量超过64字节为止。幸运的是,这些天来这已经不是什么问题了,但是很久以前我就遇到过这种情况。

不正确的UDP校验和

如果计算出的校验和与发送方提供的校验和不匹配,则该数据包将被静默丢弃。默认情况下,Wireshark不会计算校验和,它会在驱动程序获取数据包之前将其自身连接起来,特别是如果您以混杂模式运行Wireshark时。您可以通过编辑>首选项>协议> UDP>验证UDP校验和来打开校验和验证。

如果可以在发送方更改代码,请将UDP校验和标头字段设置为全零以禁用校验和。

Windows上的网络适配器设置

如果您的计算机是在企业内部管理的,那么我知道至少有两个适配器插件会干扰异常的网络数据包。尝试打开网络适配器上的“属性”对话框,然后看看。

Windows防火墙

我不是专家,但是我认为Windows防火墙的默认设置允许多播通过。再说一次,如果您的计算机是集中管理的,则策略可能已经过调整。