3-MQTTプロトコル分析

3975 ワード

MQTTのプロトコルが必要であれば、その相互作用過程を見て、その原理を理解することを深めてもいいです。
1.新聞
固定報文フォーマット:タイプ+フラグビット
Bit
7-4
3-0
byte 1
MQTT制御メッセージの種類
制御の種類を指定するためのフラグビット
byte 2…
残りの長さ
1.1 MQTT制御メッセージの種類:
新聞の種類
フィールド値
データの方向
説明
保留
0
無効化
保留
CONNET
1
Cient->Server
クライアントがサーバに接続されています。
CONNIN ACK
2
Server->Cient
接続確認
PUBLISH
3
Cient Server
ニュースを発表する
PUBACK
4
Cient Server
リリースの確認
PUBRC
5
Cient Server
メッセージは受信されました(QoS 2第1段階)
PUBREL
6
Cient Server
メッセージリリース(QoS 2第2段階)
PUBCO MP
7
Cient Server
リリース終了(QoS 2第3段階)
SUBSCRIBE
8
Cient->Server
クライアント購読要求
SUBACK
9
Server->Cient
サービス購読の確認
UNSUBACRIBE
10
Cient->Server
クライアントの購読をキャンセルします。
UNSUBACK
11
Server->Cient
サービスで購読の確認をキャンセルします。
PINGREQ
12
Cient->Server
クライアントが心拍を送る
PINGRESP
13
Server->Cient
仕事を終えて心臓の鼓動を回復する。
DISCONECT
14
Cient->Server
クライアント切断接続要求
保留
15
無効化
保留
1.2制御アラームタイプのフラグビット:
制御メッセージ
固定ヘッダフラグ
Bit 3
Bit 2
Bit 1
Bit 0
CONNET
Reserved
0
0
0
0
CONNIN ACK
Reserved
0
0
0
0
PUBLISH
Used in MQTT 3.1.1
DUP
QoS
QoS
RETAIN
PUBACK
Reserved
0
0
0
0
PUBRC
Reserved
0
0
0
0
PUBREL
Reserved
0
0
1
0
PUBCO MP
Reserved
0
0
0
0
SUBSCRIBE
Reserved
0
0
1
0
SUBACK
Reserved
0
0
0
0
UNSUBSCRIBE
Reserved
0
0
1
0
UNSUBACK
Reserved
0
0
0
0
PINGREQ
Reserved
0
0
0
0
PINGRESP
Reserved
0
0
0
0
DISCONECT
Reserved
0
0
0
0
  • 上記のメッセージを見ると、PUBのQOSフラグは直接に「制御アラームタイプのフラグビット」の中にあるが、CONNETとSUBのQOSマークは頭にない。
  • トラッキングは、CONNETおよびSUBのQOSマークが後続のデータ内にあることを発見することができる
  • PINGときめきQOS設定がない
  • 2.接続
    新聞の種類
    データの方向
    説明
    0 x 10
    client->brook er
    MQTT CONNET
    0 x 20
    brook->client
    MQTT CONNIN ACK

    リターンコード応答
    説明
    0
    0 x 00接続は受け入れられました
    接続はすでにサービスで受け入れられました。
    1
    0 x 01接続が拒否されました。サポートされていないプロトコルのバージョンです。
    サービス側はクライアント要求のMQTTプロトコルレベルをサポートしていません。
    2
    0 x 02接続が拒否されました。不合格のクライアント識別子
    クライアント識別子は正確なUTF-8符号化であるが、サービス端末は使用を許可しない。
    3
    0 x 03接続は拒否されました。サービスは利用できません。
    ネットワーク接続は確立されましたが、MQTTサービスは利用できません。
    4
    0 x 04接続が拒否されました。無効なユーザ名またはパスワードです。
    ユーザ名またはパスワードのデータフォーマットは無効です。
    5
    0 x 05接続は拒否されました。許可されていません。
    クライアントはこのサーバに接続する権限がありません。
    6-255
    保留
    前の表のすべての接続のリターンコードが不適切だと思うなら、サーバーは必須です。
    3.ドキドキ
    一つの鼓動には三つのカバンがあります。
    新聞の種類
    データの方向
    説明
    0 xc 0
    client->brook er
    MQTT PINGREQ
    0 xd 0
    brook->client
    MQTT PINGRESP
    client->brook er
    TCP ACK
    4.リリース
    4.1 QOS=0の場合
    新聞の種類
    データの方向
    説明
    0 x 30
    client->brook er
    MQTT PUBLISH
    brook->client
    TCP ACK
    4.2 QOS=1の場合
    新聞の種類
    データの方向
    説明
    0 x 32
    client->brook er
    MQTT PUBLISH
    0 x 40
    brook->client
    MQTT PUBACK
    4.3 QOS=2の場合
    新聞の種類
    データの方向
    説明
    0 x 34
    client->brook er
    MQTT PUBLISH
    0 x 50
    brook->client
    MQTT PUBREEC
    0 x 62
    client->brook er
    MQTT PUBREL
    0 x 70
    brook->client
    TCP PUBCO MP
    5.バッグをつかむ
    【MQTT】Wirestrukを用いてMQTTプロトコルを分析する:https://blog.csdn.net/yannanxiu/article/details/71310723
  • は最新バージョンに更新され、直接mqttの新聞文を解析することができます(1883ポートでなければ解析できません)。
  • ですが、mqttsの記事を解析することができません。BitTorrent(ビットストリーム)
  • が表示されます。
  • は、ポートフィルタ(tcp.dstport == 1883) || (tcp.srcport == 1883)
  • を使用することができます。
    http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html