MQTT協議已經成了物聯網通信中的一個熱詞,今天我們一起來協議一下關于MQTT協議的一些知識。
MQTT協議發展
IBM公司的安迪·斯坦福-克拉克及Cirrus Link公司的阿蘭·尼普于1999年撰寫了該協議的第一個版本。在2013年IBM公司向結構化資訊標準促進組織提交了MQTT 3.1版規范,并附有相關章程,以確保只能對規范進行少量更改。

MQTT協議概述
MQTT協議(消息隊列遙測傳輸)是ISO標準(ISO/IEC PRF 20922)下基于發布/訂閱范式的消息協議。MQTT工作在TCP/IP協議族上,是為硬件性能低下的遠程設備以及網絡狀況糟糕的情況下而設計的發布/訂閱型消息協議。
MQTT協議是一個基于客戶端-服務器的消息發布/訂閱傳輸協議,MQTT協議是輕量、簡單、開放和易于實現的,這些特點使它適用范圍非常廣泛。如:機器與機器(M2M)通信和物聯網(IoT)。在通過衛星鏈路通信傳感器、偶爾撥號的醫療設備、智能家居、及一些小型化設備中也被廣泛使用。

MQTT協議規范
由于物聯網環境具有一定的特殊性,所以MQTT設計都需要遵守以下規范:
① 精簡,不添加可有可無的功能;
② 發布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞;
③ 允許用戶動態創建主題,零運維成本;
④ 把傳輸量降到最低以提高傳輸效率;
⑤ 把低帶寬、高延遲、不穩定的網絡等因素考慮在內;
⑥ 支持連續的會話控制;
⑦ 理解客戶端計算能力可能很低;
⑧ 提供服務質量管理;
⑨ 假設數據不可知,不強求傳輸數據的類型與格式,保持靈活性。
MQTT協議特點
MQTT協議工作在低帶寬、不可靠的網絡的遠程傳感器和控制設備通訊而設計的協議,MQTT協議具有以下主要的幾項特性:
① 使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合。
② 對負載內容屏蔽的消息傳輸。
③ 使用TCP/IP提供網絡連接。
④ 有“至多一次”“至少一次”“只有一次”三種消息發布服務質量。
⑤ 小型傳輸,開銷很小(固定長度的頭部是2字節),協議交換最小化,以降低網絡流量。
⑥ 使用Last Will和Testament特性通知有關各方客戶端異常中斷的機制。

MQTT協議工作原理
實現MQTT協議需要客戶端和服務器端通訊完成,在通訊過程中,MQTT協議中有三種身份:發布者(Publish)、代理(Broker)(服務器)、訂閱者(Subscribe)。其中,消息的發布者和訂閱者都是客戶端,消息代理是服務器,消息發布者可以同時是訂閱者。
MQTT協議傳輸的消息分為:主題(Topic)和負載(payload)兩部分:
Topic,可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會收到該主題的消息內容(payload);
payload,可以理解為消息的內容,是指訂閱者具體要使用的內容。
MQTT客戶端是指使用MQTT協議的應用程序或者設備,MQTT客戶端總是建立到服務器的網絡連接。MQTT客戶端可以是:
(1)發布其他客戶端可能會訂閱的信息;
(2)訂閱其它客戶端發布的消息;
(3)退訂或刪除應用程序的消息;
(4)斷開與服務器連接。
MQTT服務器協議以稱為"消息代理"(Broker),可以是一個應用程序或一臺設備。它是位于消息發布者和訂閱者之間,它可以接受來自客戶的網絡連接;接受客戶發布的應用信息;處理來自客戶端的訂閱和退訂請求;還可以向訂閱的客戶轉發應用程序消息。