天天看點

使用抓包工具Wireshark分析IoT裝置網絡行為

1. 背景[]

當我們進行物聯網開發過程中,裝置調試有時候很難進行,就需要借助網絡抓包工具Wireshark來幫我們分析裝置行為,定位問題。下面我們通過一個簡單案例,給大家講解使用Wireshark分析裝置與阿裡雲IoT物聯網平台通信的過程。

2. 準備工作

2.1 建立裝置

在阿裡雲IoT物聯網平台建立産品,并注冊裝置,擷取三元組。

使用抓包工具Wireshark分析IoT裝置網絡行為

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 

使用抓包工具Wireshark分析IoT裝置網絡行為

2.4 啟動模拟程式

使用抓包工具Wireshark分析IoT裝置網絡行為

3. 網絡抓包分析

随着模拟腳本執行完畢,完整的MQTT網絡互動過程都在wireshark捕捉到了。

為了友善我把裝置ip标記成了 device,本次連接配接的阿裡雲IoT的IP保持不變。

3.1 TCP的三次握手

使用抓包工具Wireshark分析IoT裝置網絡行為

上面截圖紅框部分就是 TCP 的三次握手行為。由device的發起,裝置端用的端口是 56150。

3.2 MQTT的CONNECT行為

下圖展示了MQTT的Connect的行為。

點選Connect記錄,在底部可以看到詳細封包。其中client id,user name,password是這次CONNECT用來驗證裝置合法性的身份資訊。想了解細節請 

移步這裡

使用抓包工具Wireshark分析IoT裝置網絡行為

身份驗證完成,IoT物聯網平台會回複CONNACK作為CONNECT的響應。

使用抓包工具Wireshark分析IoT裝置網絡行為

3.3 MQTT的SUBSCRIBE行為

下圖展示了device向IoT物聯網平台訂閱topic的過程。這裡device主動訂閱了一個Topic,見紅框部分。

使用抓包工具Wireshark分析IoT裝置網絡行為

下圖展示了IoT物聯網平台響應device訂閱的行為。

使用抓包工具Wireshark分析IoT裝置網絡行為

3.3 MQTT的PUBLISH行為

下圖展示了device向IoT物聯網平台PUBLISH一條QoS=1的消息。在封包資訊裡,我們可以看到消息對應的Topic和Payload。

使用抓包工具Wireshark分析IoT裝置網絡行為

由于是QoS=1消息,IoT物聯網平台會回複一條PUBACK給device。

使用抓包工具Wireshark分析IoT裝置網絡行為

在IoT物聯網控制台的日志服務也能看到這條消息日志。

使用抓包工具Wireshark分析IoT裝置網絡行為

3.4 MQTT的DISCONNECT行為

下圖展示了device主動發起DISCONNECT指令,斷開MQTT連接配接通道。

使用抓包工具Wireshark分析IoT裝置網絡行為

3.5 TCP的四次揮手

使用抓包工具Wireshark分析IoT裝置網絡行為

在IoT物聯網控制台的日志服務也能看到完整的裝置上下線日志,如下。

使用抓包工具Wireshark分析IoT裝置網絡行為

4. 結束語

至此,我們掌握了使用Wireshark抓包工具分析裝置和阿裡雲IoT物聯網平台網絡通信的基本技能,希望對大家IoT物聯網開發有所幫助。

5. 附錄

TCP層的幾個辨別

SYN 表示建立連接配接
FIN 表示關閉連接配接
ACK 表示響應
PSH 表示有 DATA資料傳輸
RST 表示連接配接重置
使用抓包工具Wireshark分析IoT裝置網絡行為

繼續閱讀