MQTT 協議主要特點
MQTT 協議是爲大量計算能力有限,且工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要的幾項特性:
- 使用發佈 / 訂閱消息模式,提供一對多的消息發佈,解除應用程序耦合;
- 對負載內容屏蔽的消息傳輸;
- 使用 TCP/IP 提供網絡連接;
-
- 有三種消息發佈服務質量:
- “至多一次”,消息發佈完全依賴底層 TCP/IP 網絡。會發生消息丟失或重複。這一級別可用於如下情況,環境傳感器數據,丟失一次記錄無所謂,因爲不久後還會有第二次發送。
- “至少一次”,確保消息到達,但消息重複可能會發生。
- “只有一次”,確保消息到達一次。這一級別可用於如下情況,在計費系統中,消息重複或丟失會導致不正確的結果。
- 小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量;
- 使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制。
MQTT報文類型
名字 | 值 | 報文流動方向 | 描述 |
---|---|---|---|
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 | 禁止 | 保留 |