我們都知道,目前我們最常用的協(xié)議就是http協(xié)議,因?yàn)槟壳暗暮芏喽际遣捎胔ttp進(jìn)行通信的。特別是網(wǎng)站瀏覽,全都是基于http(https)通信的。
但是我們知道物聯(lián)網(wǎng)設(shè)備不同于計(jì)算機(jī),物聯(lián)網(wǎng)設(shè)備往往是嵌入式設(shè)備,嵌入式設(shè)備往往是資源有限的設(shè)備,對(duì)于帶寬或者能耗都有一定的要求。所以臃腫的http協(xié)議,對(duì)于物聯(lián)網(wǎng)來說,不是很適合。那么什么協(xié)議適合物聯(lián)網(wǎng)應(yīng)用呢?下面小生帶你了解一下MQTT協(xié)議吧!
MQTT協(xié)議
MQTT協(xié)議是由IBM開發(fā)的一個(gè)協(xié)議,基于ISO標(biāo)準(zhǔn)的在TCP/IP協(xié)議之上的應(yīng)用層協(xié)議,基于發(fā)布訂閱的“輕量級(jí)”消息協(xié)議,專門為了M2M通信的協(xié)議!
那么我們需要了解MQTT協(xié)議那些關(guān)鍵點(diǎn)呢?
1、MQTT結(jié)構(gòu)圖
,mqtt不是直接節(jié)點(diǎn)與節(jié)點(diǎn)之間進(jìn)行聯(lián)系,而是通過代理進(jìn)行聯(lián)系,訂閱者向代理訂閱某一信息,當(dāng)發(fā)布者上傳改類型的信息給代理的時(shí)候,那么代理就會(huì)推送給訂閱者
2、服務(wù)質(zhì)量等級(jí)
(1)QoS 0:最多分發(fā)一次,不管確不確認(rèn)收到。
(2)QoS 1:至少分發(fā)一次,可能會(huì)重復(fù)發(fā)送。
(3)QoS 2:只分發(fā)一次,并且確認(rèn)消息到達(dá)。
3、MQTT消息類型
(1)CONNECT:連接服務(wù)端
(2)CONNACK:確認(rèn)連接請(qǐng)求
(3)PUBLISH:發(fā)布消息
(4)PUBACK:發(fā)布確認(rèn)
(5)PUBREC:發(fā)布收到(QoS2中的第一步)
(6)PUBREL:發(fā)布釋放(QoS2中的第二步)
(7)PUBCOMP:發(fā)布完成(QoS2中的第三步)
(8)SUBSCRIBE:訂閱主題
(9)SUBACK:訂閱確認(rèn)
(10)UNSUBSCRIBE:取消訂閱
(11)UNSUBACK:取消訂閱確認(rèn)
(12)PINGREQ:心跳請(qǐng)求
(13)PINGRESP:心跳響應(yīng)
(14)DISCONNECT:斷開連接
如下圖所示:
MQTT 控制報(bào)文的類型