如何使用 WireShark 对从本地计算机发送到 Azure IOT 中心的消息进行故障排除?

How to troubleshoot messages sent from local compter to Azure IOT Hub using WireShark?

我正在使用以下代码片段从我的 C# 应用程序向 IOT Hub 发送消息。

    public async Task<MessageToTargetStatus> ForwardMessage(byte[] message)
    {
        var messageToSend = new Microsoft.Azure.Devices.Client.Message(message);            
        await iotHubClient.GetDeviceClient().SendEventAsync(messageToSend).ConfigureAwait(false);
        return MessageToTargetStatus.Success;
    }

Azure IOT Hub

成功接收消息

现在我想测试这些消息的安全性并尝试在 WireShark 中验证这些消息。

我在 WireShark 中看到很多记录,但我无法弄清楚哪些是我发送到 IOT Hub 的消息。

我该怎么做?我在端口 1833 使用 MQTT,运行 作为“Windows 服务”。

我添加了如下过滤器,但没有成功

MQTT 我可能需要通过网络适配器强制数据包,使用本地主机 windows 将使用环回而不是网络接口卡。那么如何在 WireShark 中实现呢?

使用 Device Explorer 工具屏幕截图更新了问题

当我从Device Explorer发送单条消息时,我在WireShark看到了很多通讯记录。我应该过滤哪个协议?

连接字符串 - 我正在使用 Mqtt_WebSocket_Only

  _hubClient = DeviceClient.CreateFromConnectionString(IotHubConnectionString, TransportType.Mqtt_WebSocket_Only);

Azure IoT Hub 仅支持安全通信,对于 MQTT 协议,它使用 8883 端口号。 所以你需要将捕获过滤器更改为 tcp.port == 8883.

参考:Azure IoT Hub communication protocol and ports

或使用以下命令查找 Azure IoT 中心 IP 地址:

ping [your-hub-name].azure-devices.net

然后使用这个过滤器:

ip.addr == [iothub-address]

如果你使用AMQP,它的端口是5671。你可以像这样在Wireshark中设置过滤器: