使用抓包工具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);
}
AI 代码解读

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

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
打赏
0
0
0
1
4213
分享
相关文章
Linux(openwrt)下iptables+tc工具实现网络流量限速控制(QoS)
通过以上步骤,您可以在Linux(OpenWrt)系统中使用iptables和tc工具实现网络流量限速控制(QoS)。这种方法灵活且功能强大,可以帮助管理员有效管理网络带宽,确保关键业务的网络性能。希望本文能够为您提供有价值的参考。
115 28
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
FireCrawl 是一款开源的 AI 网络爬虫工具,专为处理动态网页内容、自动爬取网站及子页面而设计,支持多种数据提取和输出格式。
463 19
FireCrawl:开源 AI 网络爬虫工具,自动爬取网站及子页面内容,预处理为结构化数据
深入解析:Linux网络配置工具ifconfig与ip命令的全面对比
虽然 `ifconfig`作为一个经典的网络配置工具,简单易用,但其功能已经不能满足现代网络配置的需求。相比之下,`ip`命令不仅功能全面,而且提供了一致且简洁的语法,适用于各种网络配置场景。因此,在实际使用中,推荐逐步过渡到 `ip`命令,以更好地适应现代网络管理需求。
49 11
浅析Kismet:无线网络监测与分析工具
Kismet是一款开源的无线网络监测和入侵检测系统(IDS),支持Wi-Fi、Bluetooth、ZigBee等协议,具备被动监听、实时数据分析、地理定位等功能。广泛应用于安全审计、网络优化和频谱管理。本文介绍其安装配置、基本操作及高级应用技巧,帮助用户掌握这一强大的无线网络安全工具。
115 9
浅析Kismet:无线网络监测与分析工具
Nping工具详解:网络工程师的瑞士军刀
### Nping工具详解:网络工程师的瑞士军刀 Nping是Nmap项目的一部分,支持TCP、UDP、ICMP和ARP等多种协议,用于生成和分析网络数据包。它提供灵活的命令行界面,适用于网络探测、安全测试和故障排除。本文介绍Nping的基础与高级用法,包括发送不同类型的网络请求、自定义TCP标志位、路由跟踪等,并通过实战案例展示其应用。掌握Nping有助于更好地理解和管理网络环境。 (239字符)
103 9
基于AI的网络流量分析:构建智能化运维体系
基于AI的网络流量分析:构建智能化运维体系
352 13
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
94 17
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
65 10
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的内容,并提供一些实用的代码示例。通过阅读本文,您将了解到如何保护自己的网络安全,以及如何提高自己的信息安全意识。
78 10

物联网

+关注