开发者社区> AIoT科技物语> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用抓包工具Wireshark分析IoT设备网络行为

简介: 使用抓包工具Wireshark分析IoT设备网络行为
+关注继续查看

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层的几个标识

SYN 表示建立连接
FIN 表示关闭连接
ACK 表示响应
PSH 表示有 DATA数据传输
RST 表示连接重置

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Kratos微服务框架实现IoT功能:设备实时地图
IoT,也就是物联网,万物互联,在未来肯定是一个热点——实际上,现在物联网已经很热了。那好,既然这一块这么有前途。那我们就来学习怎么开发物联网系统吧。可是,作为一个小白,两眼一抹黑:我想学,可是我该如何开始?这玩意儿到底该咋整呢?在这个时候,我发现了B站开源的微服务框架[go-kratos](https://github.com/go-kratos/kratos)。那么,Kratos能否实现物联网的系统和功能呢?答案是:必须可以。
0 0
阿里云iot物联网平台监控设备 在线离线状态 解决方案
阿里云iot物联网平台监控设备 在线离线状态 解决方案
0 0
阿里云IoT设备运维基础——监控报警介绍(二)|学习笔记
快速学习阿里云IoT设备运维基础——监控报警介绍(二)
0 0
IoT设备物模型接入价值与实践(三)|学习笔记
快速学习IoT设备物模型接入价值与实践(三)
0 0
IoT设备接入基础(四)|学习笔记
IoT设备接入基础(四)|学习笔记
0 0
IoT设备接入基础(三)|学习笔记
IoT设备接入基础(三)|学习笔记
0 0
IoT设备接入基础(二)|学习笔记
IoT设备接入基础(二)|学习笔记
0 0
IoT设备接入基础(一)|学习笔记
快速学习IoT设备接入基础(一)
0 0
《在 IoT 设备进行 JavaScript 开发的探索之路》电子版地址
在 IoT 设备进行 JavaScript 开发的探索之路--陈熙旻
0 0
存量设备零改动,迁移阿里云IoT平台开发实战
存量设备零改动,迁移阿里云IoT平台开发实战
0 0
+关注
AIoT科技物语
阿里云IoT物联网场景实践案例分享 https://www.yuque.com/cloud-dev/aliyun-in-action/zclrsc?#
文章
问答
来源圈子
更多
致力于实现万物互联的美好世界,为生态合作伙伴提供基于云计算、大数据、人工智能、云端一体化、安全的物联网基础平台和内容服务平台。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
可预期数据中心网络
立即下载
可编程网络视角的网络创新研究
立即下载
思科软件定义访问:实现基于业务意图的园区网络
立即下载