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

时间:2018-06-28 11:21:20

标签: c# azure mqtt tls1.2 azure-iot-hub

我正在使用以下代码段将消息从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服务”运行。

我添加了以下过滤器,但没有运气

enter image description here

MQTT我可能需要通过网络适配器强制发送数据包,使用localhost的Windows将使用环回而不是网络接口卡。那么如何在WireShark中做到这一点?

使用设备资源管理器工具屏幕截图更新的问题

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

enter image description here

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

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

1 个答案:

答案 0 :(得分:1)

Azure IoT中心仅支持安全通信,对于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中设置过滤器,如下所示:

enter image description here