| 序號 | 內容 |
|---|---|
| 1 | 《教你動手寫UDP協議棧-UDP協議棧格式》 |
| 2 | 《教你動手寫UDP協議棧-DHCP報文解析》 |
| 3 | 《教你動手寫UDP協議棧-OTA上位機》 |
| 4 | 《教你動手寫UDP協議棧-DNS報文解析》 |
| 5 | 《教你動手寫UDP協議棧-CoAP報文解析 》 |
| 6 | 《教你動手寫網絡協議棧-MQTT報文解析-實踐 》 |
| 7 | 《教你動手寫網絡協議棧-MQTT報文解析-解析 》 |
| 名稱 | 說明 |
|---|---|
| Fixed header(固定報文頭) | 所有MQTT報文都包含 |
| Variable header(可變報文頭) | 只有部分MQTT報文包含 |
| Payload(MQTT數據段) | 只有部分MQTT報文包含 |
bit 7 6 5 4 3 2 1 0
+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|Byte1| MQTT控制報文類型 |指定控制報文類型的標志 |
+-----+-----------------------------------------------|
|Byte2| 剩余長度 |
+-----+-----------------------------------------------|
| ... | 剩余長度 |
+-----------------------------------------------------|
| 類型 | 值 | 報文方向 | 描述 |
|---|---|---|---|
| RESERVED | 0 | 禁止 | 保留 |
| CONNECT | 1 | 客戶端到服務端 | 客戶端請求連接服務器 |
| CONNACK | 2 | 服務端到客戶端 | 連接報文確認 |
| PUBLISH | 3 | 雙向 | 發布消息 |
| PUBACK | 4 | 雙向 | QoS 1消息發布收到確認 |
| PUBREC | 5 | 雙向 | 發布收到(保證交付第一步) |
| PUBREL | 6 | 雙向 | 發布釋放(保證交付第二步) |
| PUBCOMP | 7 | 雙向 | QoS 2消息發布完成 |
| SUBSCRIBE | 8 | 客戶端到服務端 | 客戶端訂閱請求 |
| SUBACK | 9 | 服務端到客戶端 | 訂閱請求報文確認 |
| UNSUBSCRIBE | 10 | 客戶端到服務端 | 客戶端取消訂閱請求 |
| UNSUBACK | 11 | 服務端到客戶端 | 取消訂閱請求報文確認 |
| PINGREQ | 12 | 客戶端到服務端 | 心跳請求 |
| PINGRESP | 13 | 服務端到客戶端 | 心跳響應 |
| DISCONNECT | 14 | 客戶端到服務端 | 客戶端斷開連接 |
| RESERVED | 15 | 禁止 | 保留 |
| 類型 | 報文標志 | Bit3 | Bit2 | Bit1 | Bit0 |
|---|---|---|---|---|---|
| CONNECT | Reserved | 0 | 0 | 0 | 0 |
| CONNACK | Reserved | 0 | 0 | 0 | 0 |
| PUBLISH | Used in MQTT 3.1.1 | DUP | QoS | QoS | RETAIN |
| PUBACK | Reserved | 0 | 0 | 0 | 0 |
| PUBREC | Reserved | 0 | 0 | 0 | 0 |
| PUBREL | Reserved | 0 | 0 | 1 | 0 |
| PUBCOMP | 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 |
| DISCONNECT | Reserved | 0 | 0 | 0 | 0 |
| 字節 | 最小值 | 最大值 |
|---|---|---|
| 1 | 0(0x00) | 127(0x7F) |
| 2 | 128(0x80, 0x01) | 16383(0xFF, 0X7F) |
| 3 | 16384(0x80, 0x80, 0x01) | 2097151(0xFF, 0xFF, 0x7F) |
| 4 | 2097152(0x80, 0x80, 0x80, 0x01) | 268435455(0xFF, 0xFF, 0xFF, 0x7F) |
| 類型 | 包含可變報文頭 |
|---|---|
| PUBLISH | √(QoS > 0) |
| PUBACK | √ |
| PUBREC | √ |
| PUBREL | √ |
| PUBCOMP | √ |
| SUBSCRIBE | √ |
| SUBACK | √ |
| UNSUBSCRIBE | √ |
| UNSUBACK | √ |
| 類型 | 包含Payload |
|---|---|
| CONNECT | √ |
| PUBLISH | 可選 |
| SUBSCRIBE | √ |
| SUBACK | √ |
| UNSUBSCRIBE | √ |
內容:
10 25
00 04 4d 51 54 54
04
c2
00 3c
00 08 63 6c 69 65 6e 74 30 31
00 05 61 64 6d 69 6e
00 08 31 32 33 34 35 36 37 38
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| 含義 | User Name Flag | Password Flag | Will Retain Flag | Will QoS MSB | Will QoS LSB | Will Flag | Clean session | Rreserved |
| 值 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
內容:
20
02
00
00
| 值 | 返回碼響應 | 描述 |
|---|---|---|
| 0 | 0x00連接已接受 | 連接已被服務器接受 |
| 1 | 0x01連接已拒絕,不支持的協議版本 | 服務器不支持客戶端請求的協議版本 |
| 2 | 0x02連接已拒絕,不合格的客戶端ID | 客戶端ID是正確的UTF-8碼,但服務器不允許使用 |
| 3 | 0x03連接已拒絕,服務端不可用 | 網絡連接已建立,但MQTT服務不可用 |
| 4 | 0x04連接已拒絕,無效的用戶名或密碼 | 用戶名或密碼的數據格式無效 |
| 5 | 0x05連接已拒絕,未授權 | 客戶端未被授權連接到此服務器 |
| 6-255 | Reserved | 保留 |

RT-Thread線下技術培訓:MQTT網關
本次培訓RT-Thread將以ART-Pi為硬件平臺+RT-Thread物聯網操作系統提供MQTT網關原型,希望幫助工程師快速熟悉基于RT-Thread的項目開發流程,熟悉MQTT網關開發中所涉及到的技術要點如Modbus、MQTT、連網、文件系統、FTP、Bootloader、OTA、裁剪優化,提升產品開發速度。
我們將到訪的城市有:上海、深圳、南京、廣州、鄭州、北京、武漢、天津、成都、西安

長按識別上方二維碼報名
