CoderTools

MQTTコーデック

MQTTプロトコルパケットのエンコードとデコード

🔒 100% ローカル処理入力されたデータはすべてブラウザ内で処理されます。サーバーに送信されることはありません。

Wireshark、ネットワークアナライザー、またはブローカーログからキャプチャしたMQTTパケットデータを貼り付け

サンプルパケット

デコード結果

パケットデータを入力してデコードをクリックすると結果が表示されます

MQTTパケットタイプ参照

コード 名前 方向 説明
0x10CONNECTC→Sクライアント接続要求
0x20CONNACKS→C接続確認
0x30PUBLISHC↔Sメッセージ発行
0x40PUBACKC↔S発行確認(QoS 1)
0x50PUBRECC↔S発行受信(QoS 2 第1段階)
0x60PUBRELC↔S発行解放(QoS 2 第2段階)
0x70PUBCOMPC↔S発行完了(QoS 2 第3段階)
0x80SUBSCRIBEC→S購読要求
0x90SUBACKS→C購読確認
0xA0UNSUBSCRIBEC→S購読解除要求
0xB0UNSUBACKS→C購読解除確認
0xC0PINGREQC→SPing要求(キープアライブ)
0xD0PINGRESPS→CPing応答
0xE0DISCONNECTC→Sクライアント切断

MQTTプロトコルガイド

MQTTプロトコルの理解

MQTT(Message Queuing Telemetry Transport)はTCP/IP上に構築された軽量メッセージングプロトコルです。1999年にIBMが衛星リンク監視用に開発し、現在ではIoT通信のデファクトスタンダードとなっています。クライアントは中央ブローカーを通じてパブリッシュ-サブスクライブパターンで通信し、不安定なネットワークやリソース制約のあるデバイスに最適です。

パケットバイナリ構造

すべてのMQTTパケットは固定ヘッダー(1-5バイト)で始まり、オプションの可変ヘッダーとペイロードが続きます。最初のバイトのビット7-4がパケットタイプ、ビット3-0がタイプ固有のフラグです。残り長さフィールドは可変長エンコーディングを使用します。

ビット範囲 フィールド名 説明
7-4パケットタイプ制御パケットタイプ(1-15)
3-0フラグタイプ固有フラグ(PUBLISHのDUP、QoS、RETAIN)

可変長エンコーディング

MQTTは残り長さフィールドにコンパクトなエンコーディングを使用します。各バイトは7ビットのデータと1ビットの継続フラグを使用します。0-127は1バイト、128-16383は2バイト、最大4バイトで268,435,455まで表現可能です。

バイト数 最小値 最大値
10127
212816,383
316,3842,097,151
42,097,152268,435,455

CONNECTパケットの詳細

CONNECTパケットはTCP接続確立後に最初に送信されます。プロトコルバージョン、キープアライブ間隔、クライアントID、オプションの認証情報を含みます。接続フラグはクリーンセッション、遺言メッセージ設定、認証を含むセッション動作を制御します。

PUBLISHパケットのメカニズム

PUBLISHパケットはアプリケーションメッセージを運びます。固定ヘッダーのフラグはQoSレベル、保持動作、重複ステータスを示します。QoS 0は「発火して忘れる」、QoS 1は少なくとも1回の配信を保証、QoS 2は4ウェイハンドシェイクで厳密に1回の配信を保証します。

QoS配信保証

QoS 0
最大1回 - 発火して忘れる配信
QoS 1
少なくとも1回 - 配信保証、重複の可能性あり
QoS 2
厳密に1回 - 単一配信を保証

実用アプリケーション

  • Wiresharkやtcpdumpからのパケットキャプチャをデバッグ用に分析
  • MQTTブローカーやクライアント実装を検証するテストパケットを構築
  • 実際のパケット検査を通じてMQTTプロトコル内部を学習
  • IoTデバイスの接続とメッセージ配信の問題をトラブルシューティング
  • 自動テストシナリオ用のサンプルパケットを生成

プロトコルバージョン

3つの主要なMQTTバージョンが使用されています:MQTT 3.1(プロトコルレベル3)、MQTT 3.1.1(プロトコルレベル4、ISO/IEC 20922:2016)、拡張機能を持つMQTT 5.0(プロトコルレベル5)。このツールは主に最も広く展開されているMQTT 3.1.1を対象としています。

クイックメニュー

最近のツールはありません