写点什么

使用抓包工具 Wireshark 分析 IoT 设备网络行为——设备管理运维类

作者:阿里云AIoT
  • 2023-03-14
    浙江
  • 本文字数:1376 字

    阅读完需:约 5 分钟

1. 背景[]

当我们进行物联网开发过程中,设备调试有时候很难进行,就需要借助网络抓包工具 Wireshark 来帮我们分析设备行为,定位问题。下面我们通过一个简单案例,给大家讲解使用 Wireshark 分析设备与阿里云 IoT 物联网平台通信的过程。

2. 准备工作

2.1 创建设备

在阿里云 IoT 物联网平台创建产品,并注册设备,获取三元组。

image.png


2.2 设备模拟程序

我们在电脑上用 Nodejs 编写 device 模拟程序,建立连接,订阅,发布,断开连接。

/** * node aliyun-iot-device.js */const mqtt = require('aliyun-iot-mqtt');//设备身份三元组+区域const options = {    "productKey": "设备PK",    "deviceName": "设备DN",    "deviceSecret": "设备Secret",    "regionId": "cn-shanghai"};
//1.建立连接const client = mqtt.getAliyunIotMqttClient(options);//2.订阅主题setTimeout(function() { client.subscribe(`/${options.productKey}/${options.deviceName}/user/get`)}, 3 * 1000);//3.发布消息setTimeout(function() { client.publish(`/${options.productKey}/${options.deviceName}/user/update`, getPostData(),{qos:1});}, 5 * 1000);//4.关闭连接setTimeout(function() { client.end();}, 8 * 1000);

function getPostData() { const payloadJson = { temperature: Math.floor((Math.random() * 20) + 10), humidity: Math.floor((Math.random() * 20) + 10) } console.log("payloadJson " + JSON.stringify(payloadJson)) return JSON.stringify(payloadJson);}
复制代码


2.3 使用 Wireshark 抓取网络包

IoT 物联网平台使用 MQTT 协议通信,我们只需要配置如下规则即可: tcp and port 1883 

image.png


2.4 启动模拟程序


image.png


3. 网络抓包分析

随着模拟脚本执行完毕,完整的 MQTT 网络交互过程都在 wireshark 捕捉到了。为了方便我把设备 ip 标记成了 device,本次连接的阿里云 IoT 的 IP 保持不变。


3.1 TCP 的三次握手


image.png

上面截图红框部分就是 TCP 的三次握手行为。由 device 的发起,设备端用的端口是 56150

3.2 MQTT 的 CONNECT 行为

下图展示了 MQTT 的 Connect 的行为。点击 Connect 记录,在底部可以看到详细报文。其中 client id,user name,password 是这次 CONNECT 用来验证设备合法性的身份信息。想了解细节请 移步这里

image.png


身份验证完成,IoT 物联网平台会回复 CONNACK 作为 CONNECT 的响应。

image.png


3.3 MQTT 的 SUBSCRIBE 行为

下图展示了 device 向 IoT 物联网平台订阅 topic 的过程。这里 device 主动订阅了一个 Topic,见红框部分。

image.png

下图展示了 IoT 物联网平台响应 device 订阅的行为。

image.png


3.3 MQTT 的 PUBLISH 行为

下图展示了 device 向 IoT 物联网平台 PUBLISH 一条 QoS=1 的消息。在报文信息里,我们可以看到消息对应的 Topic 和 Payload。

image.png


由于是 QoS=1 消息,IoT 物联网平台会回复一条 PUBACK 给 device。

image.png

在 IoT 物联网控制台的日志服务也能看到这条消息日志。

image.png


3.4 MQTT 的 DISCONNECT 行为

下图展示了 device 主动发起 DISCONNECT 命令,断开 MQTT 连接通道。

image.png


3.5 TCP 的四次挥手


image.png

在 IoT 物联网控制台的日志服务也能看到完整的设备上下线日志,如下。

image.png


4. 结束语

至此,我们掌握了使用 Wireshark 抓包工具分析设备和阿里云 IoT 物联网平台网络通信的基本技能,希望对大家 IoT 物联网开发有所帮助。


5. 附录

TCP 层的几个标识


物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn


阿里云物联网平台客户交流群

用户头像

阿里云AIoT

关注

物联网内容搬运者 2022-04-22 加入

还未添加个人简介

评论

发布
暂无评论
使用抓包工具Wireshark分析IoT设备网络行为——设备管理运维类_网络协议_阿里云AIoT_InfoQ写作社区