Use the packet capture tool Wireshark to analyze the network behavior of IoT devices

1. 背景
IoT の開発において、デバイスのデバッグが困難な場合があります。そのような場合は、ネットワークパケットキャプチャツール Wireshark を使用してデバイスの動作を分析し、問題の特定に役立てます。ここでは、簡単なケースを使って、Wireshark を使用してデバイスと Alibaba Cloud IoT Platform 間の通信を分析する流れを説明します。

2. 準備作業
2.1 デバイスの作成
Alibaba Cloud IoT Platform でプロダクトを作成し、デバイスを登録して、三元セットを取得します。

2.2 デバイスシミュレーションプログラムの作成
Node.js を使用してコンピュータ上でデバイスシミュレーションプログラムを作成し、接続の確立、トピックのサブスクライブ、メッセージのパブリッシュ、および切断を行います。

/**
* node aliyun-iot-device.js
*/
const mqtt = require('aliyun-iot-mqtt');
//device identity triple + region
const options = {
"productKey": "Device PK",
"deviceName": "Device DN",
"deviceSecret": "Device Secret",
"regionId": "cn-shanghai"
};

//1. Establish a connection
const client = mqtt.getAliyunIotMqttClient(options);
//2. Subscribe to the topic
setTimeout(function() {
client.subscribe(`/${options.productKey}/${options.deviceName}/user/get`)
}, 3 * 1000);
//3. Publish message
setTimeout(function() {
client.publish(`/${options.productKey}/${options.deviceName}/user/update`, getPostData(),{qos:1});
}, 5 * 1000);
//4. Close the connection
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 Platform は MQTT プロトコルで通信を行うため、以下のルールを設定するだけで十分です:
tcp and port 1883


2.4 シミュレーションプログラムの起動


3. ネットワークパケットキャプチャの分析
シミュレーションスクリプトの実行後、Wireshark に MQTT の完全なネットワーク通信の過程がキャプチャされます。
便宜上、デバイスの IP を「device」、Alibaba Cloud IoT Platform の接続先 IP はこの通信中に変更なしとしてマークしています。


3.1 TCP の 3 ウェイハンドシェイク

上記のスクリーンショットの赤枠は、TCP の 3 ウェイハンドシェイクの動作を示しています。デバイスから接続を開始し、デバイス側で使用されるポートは 56150 です。

3.2 MQTT の CONNECT 動作
下図は、MQTT の CONNECT 動作を示しています。
CONNECT のレコードをクリックすると、下部に詳細なメッセージ情報が表示されます。その中のクライアント ID、ユーザー名、パスワードは、この CONNECT でデバイスの正当性を検証するために使用される認証情報です。詳細については、こちらをクリックしてください。

ID 検証の完了後、IoT Platform は CONNECT の応答として CONNACK を返します。


3.3 MQTT の SUBSCRIBE 動作
下図は、デバイスが IoT Platform のトピックをサブスクライブするプロセスを示しています。ここで、デバイスはトピックを能動的にサブスクライブします。赤枠を参照してください。

下図は、デバイスのサブスクライブに対する IoT Platform の応答動作を示しています。



3.3 MQTT の PUBLISH 動作
下図は、デバイスが QoS=1 のメッセージを IoT Platform に PUBLISH する様子を示しています。メッセージ情報には、対応するトピックとペイロードが表示されています。


QoS=1 のメッセージであるため、IoT Platform はデバイスに PUBACK を返します。

このメッセージログは、IoT コンソールの Log Service でも確認できます。



3.4 MQTT の DISCONNECT 動作
下図は、デバイスが DISCONNECT コマンドを送信して MQTT の接続チャンネルを切断する様子を示しています。


3.5 TCP の 4 ウェイハンドシェイク

IoT コンソールの Log Service では、デバイスがオフラインになる際の完全なログも確認できます。内容は以下のとおりです。



4. まとめ
これで、Wireshark パケットキャプチャツールを使用して、デバイスと Alibaba Cloud IoT Platform 間のネットワーク通信を分析する基本的なスキルを習得しました。皆様の IoT 開発にお役立ていただければ幸いです。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.