1、MQTT協議是由IBM開發的即時通訊協議,相比來說比較適合物聯網場景的通訊協議,MQTT協議采用發布/訂閱模式,所有的物聯網終端都通過TCP連接到云端,云端通過主題的方式管理各個設備關注的通訊內容,負責將設備與設備之間訊息的轉發,
2、mqtt協議是應用層協議,
3、MQTT協議是為大量計算能力有限,且作業在低帶寬、不可靠的網路的遠程傳感器和控制設備通訊而設計的協議,它具有以下主要的幾項特性:
使用發布/訂閱訊息模式,提供一對多的訊息發布,解除應用程式耦合;
對負載內容屏蔽的訊息傳輸;
使用 TCP/IP 提供網路連接;
有三種訊息發布服務質量:
a:“至多一次”,訊息發布完全依賴底層 TCP/IP 網路,會發生訊息丟失或重復,這一級別可用于如下情況,環境傳感器資料,丟失一次讀記錄無所謂,因為不久后還會有第二次發送,
b:“至少一次”,確保訊息到達,但訊息重復可能會發生,
c:“只有一次”,確保訊息到達一次,這一級別可用于如下情況,在計費系統中,訊息重復或丟失會導致不正確的結果,
使用Last Will和Testament特性通知有關各方客戶端例外中斷的機制,
Last Will:即遺言機制,用于通知同一主題下的其他設備發送遺言的設備已經斷開了連接,
Testament:遺囑機制,功能類似于Last Will,
4、MQTT訊息格式
每條MQTT命令訊息的訊息頭都包含一個固定的報頭,有些訊息會攜帶一個可變報文頭和一個負荷,訊息格式如下:
固定報文頭 | 可變報文頭 | 負荷
固定報文頭(Fixed Header)
MQTT固定報文頭最少有兩個位元組,第一位元組包含訊息型別(Message Type)和QoS級別等標志位,第二位元組開始是剩余長度欄位,該長度是后面的可變報文頭加訊息負載的總長度,該欄位最多允許四個位元組,
5、MQTT在協議設計時就考慮到不同設備的計算性能的差異,所以所有的協議都是采用二進制格式編解碼,并且編解碼格式都非常易于開發和實作,最小的資料包只有2個位元組,對于低功耗低速網路也有很好的適應性,有非常完善的QOS機制,根據業務場景可以選擇最多一次、至少一次、剛好一次三種訊息送達模式,運行在TCP協議之上,同時支持TLS(TCP+SSL)協議,并且由于所有資料通信都經過云端,安全性得到了較好地保障,
6、MQTT訊息質量有三個等級,QoS 0,QoS 1和 QoS 2,
QoS 0:最多分發一次,訊息的傳遞完全依賴底層的TCP/IP網路,協議里沒有定義應答和重試,訊息要么只會到達服務端一次,要么根本沒有到達,
QoS 1:至少分發一次,服務器的訊息接收由PUBACK訊息進行確認,如果通信鏈路或發送設備例外,或者指定時間內沒有收到確認訊息,發送端會重發這條在訊息頭中設定了DUP位的訊息,
QoS 2:只分發一次,這是最高級別的訊息傳遞,訊息丟失和重復都是不可接受的,使用這個服務質量等級會有額外的開銷,
例如:目前流行的共享單車智能鎖,智能鎖可以定時使用QoS level 0質量訊息請求服務器,發送單車的當前位置,如果服務器沒收到也沒關系,反正過一段時間又會再發送一次,之后用戶可以通過App查詢周圍單車位置,找到單車后需要進行解鎖,這時候可以使用QoS level 1質量訊息,手機App不斷的發送解鎖訊息給單車鎖,確保有一次訊息能達到以解鎖單車,最后用戶用完單車后,需要提交付款表單,可以使用QoS level 2質量訊息,這樣確保只傳遞一次資料,否則用戶就會多付錢了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277114.html
標籤:其他
上一篇:按鍵——濾波消抖電路
