1. 背景
當我們進行物聯網開發過程中,裝置調試有時候很難進行,就需要借助網絡抓包工具Wireshark來幫我們分析裝置行為,定位問題。下面我們通過一個簡單案例,給大家講解使用Wireshark分析裝置與阿裡雲IoT物聯網平台通信的過程。
2. 準備工作
2.1 建立裝置
在阿裡雲IoT物聯網平台建立産品,并注冊裝置,擷取三元組。
2.2 裝置模拟程式
我們在電腦上用Nodejs編寫device模拟程式,建立連接配接,訂閱,釋出,斷開連接配接。
2.3 使用Wireshark抓取網絡包
IoT物聯網平台使用MQTT協定通信,我們隻需要配置如下規則即可:
tcp and port 1883
2.4 啟動模拟程式
3. 網絡抓包分析
随着模拟腳本執行完畢,完整的MQTT網絡互動過程都在wireshark捕捉到了。
為了友善我把裝置ip标記成了 device,本次連接配接的阿裡雲IoT的IP保持不變。
3.1 TCP的三次握手
上面截圖紅框部分就是 TCP 的三次握手行為。由device的發起,裝置端用的端口是 56150。
3.2 MQTT的CONNECT行為
下圖展示了MQTT的Connect的行為。
點選Connect記錄,在底部可以看到詳細封包。其中client id,user name,password是這次CONNECT用來驗證裝置合法性的身份資訊。想了解細節請 移步這裡。
身份驗證完成,IoT物聯網平台會回複CONNACK作為CONNECT的響應。
3.3 MQTT的SUBSCRIBE行為
下圖展示了device向IoT物聯網平台訂閱topic的過程。這裡device主動訂閱了一個Topic,見紅框部分。
下圖展示了IoT物聯網平台響應device訂閱的行為。
3.3 MQTT的PUBLISH行為
下圖展示了device向IoT物聯網平台PUBLISH一條QoS=1的消息。在封包資訊裡,我們可以看到消息對應的Topic和Payload。
由于是QoS=1消息,IoT物聯網平台會回複一條PUBACK給device。
在IoT物聯網控制台的日志服務也能看到這條消息日志。
3.4 MQTT的DISCONNECT行為
下圖展示了device主動發起DISCONNECT指令,斷開MQTT連接配接通道。
3.5 TCP的四次揮手
在IoT物聯網控制台的日志服務也能看到完整的裝置上下線日志,如下。
4. 結束語
至此,我們掌握了使用Wireshark抓包工具分析裝置和阿裡雲IoT物聯網平台網絡通信的基本技能,希望對大家IoT物聯網開發有所幫助。
5. 附錄
TCP層的幾個辨別