成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

MQTT協(xié)議介紹

lewinlee / 2171人閱讀

摘要:協(xié)議簡(jiǎn)介,消息隊(duì)列遙測(cè)傳輸是一個(gè)輕量的發(fā)布訂閱模式消息傳輸協(xié)議,是專(zhuān)門(mén)針對(duì)低帶寬和不穩(wěn)定網(wǎng)絡(luò)環(huán)境的物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)的。它是等級(jí)協(xié)議交換的第二個(gè)報(bào)文。

1.MQTT協(xié)議簡(jiǎn)介


MQTTMessage Queuing Telemetry Transport,消息隊(duì)列遙測(cè)傳輸)是一個(gè)輕量的發(fā)布/訂閱模式消息傳輸協(xié)議,是專(zhuān)門(mén)針對(duì)低帶寬和不穩(wěn)定網(wǎng)絡(luò)環(huán)境的物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)的。

特點(diǎn):

????????1.開(kāi)放消息協(xié)議,易實(shí)現(xiàn)

????????2.發(fā)布訂閱模式,一對(duì)多消息發(fā)布

????????3.基于TCP/IP網(wǎng)絡(luò)連接

????????4.報(bào)文結(jié)構(gòu)緊湊

????????5.消息QoS支持,保證可靠傳輸

MQTT協(xié)議原理

????????實(shí)現(xiàn)MQTT 協(xié)議需要客戶端和服務(wù)器 端建立 TCP 連接, 在通訊過(guò)程中, MQTT 協(xié)議中 有三種身份 :發(fā)布 者( Publish )、代理( Broker )(服務(wù)器)、訂閱者( Subscribe )。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時(shí)是訂閱者 。
MQTT 傳輸?shù)南⒎譃?/span> :主 題( Topic )和負(fù)載( payload
????????(1) Topic ,可以理解為消息的類(lèi)型,訂閱者訂閱( Subscribe )后,就會(huì)收到該主題 的 消息 內(nèi)容( payload );

????????(2payload可以理解為消息的內(nèi)容,是指訂閱者具體要使用的內(nèi)容。

MQTT協(xié)議服務(wù)器?:

????????MQTT服務(wù)器以稱(chēng)為“消息代理”(Broker),它是位于消息發(fā)布者和訂閱者之間,服務(wù)器可以:

????????(1)接受來(lái)自客戶端的網(wǎng)絡(luò)連接;

????????(2接受客戶端發(fā)布的信息;

????????(3)處理來(lái)自客戶端的訂閱和退訂請(qǐng)求;

????????(4)向訂閱的客戶轉(zhuǎn)發(fā)消息

?MQTT協(xié)議客戶端:

????????一個(gè)使用MQTT協(xié)議設(shè)備,它總是建立到服務(wù)器的網(wǎng)絡(luò)接,客戶端可以:

????????(1)發(fā)布其他客戶端可能會(huì)訂閱的信息;

????????(2)訂閱其它客戶端發(fā)布的消息;

????????(3)退訂或刪除消息;

????????(4)斷開(kāi)與服務(wù)器連接。

MQTT協(xié)議棧

?2.MQTT通信報(bào)文


MQTT協(xié)議數(shù)據(jù)包結(jié)構(gòu):

MQTT協(xié)議中,一個(gè)MQTT數(shù)據(jù)包由:固定頭(Fixed header)、可變頭(Variable header)、消息體Payload)三部分構(gòu)成。MQTT數(shù)據(jù)包結(jié)構(gòu)如下:

?Fixed Header(固定報(bào)文頭)

?Variable Header &Payload

2.1? CONNECT報(bào)文解讀

Clean Session:清理會(huì)話,用于控制會(huì)話狀態(tài)的生存時(shí)間,標(biāo)志被設(shè)置為 1,客戶端和服務(wù)端 必須丟棄之前的任何會(huì)話并開(kāi)始一個(gè)新的會(huì)話。標(biāo)志被設(shè)置為 0,服務(wù)端 必須基于當(dāng)前會(huì)話(使用客戶端標(biāo)識(shí)符識(shí)別)的狀態(tài)恢復(fù)與客戶端的通信;

Will Flag:遺囑標(biāo)志設(shè)置為 1,表示如果連接請(qǐng)求被接受了,遺囑(Will Message)消息 必須被存儲(chǔ)在服務(wù)端;

QoS:遺囑消息服務(wù)質(zhì)量等級(jí),遺囑標(biāo)志被設(shè)置為 0,遺囑 QoS 也設(shè)置為 0;遺囑標(biāo)志被設(shè)置為 1,遺囑 QoS 的值可以等于 01,2

User Name Flag:用戶名標(biāo)志,標(biāo)志被設(shè)置為 0,有效載荷中 不能包含用戶名字段,標(biāo)志被設(shè)置為 1,有效載荷中 必須包含用戶名字段;

Password Flag:密碼標(biāo)志,標(biāo)志被設(shè)置為 0,有效載荷中 不能包含密碼字段,標(biāo)志被設(shè)置為 1,有效載荷中必須包含密碼字段;

2.2? CONNACK 報(bào)文解讀

?返回碼說(shuō)明:

?服務(wù)端發(fā)送給客戶端的第一個(gè)報(bào)文 是 CONNACK,服務(wù)端發(fā)送 CONNACK 報(bào)文響應(yīng)從客戶端收到的 CONNECT 報(bào)文。

Sp: Session Present Flag

當(dāng)前會(huì)話標(biāo)志

session信息在服務(wù)器已保持,置1

未保存,置0。

2.3 PUBLISHC<>S發(fā)布消息報(bào)文解讀

DUP:重發(fā)標(biāo)志

QoS2、Qos1:如果為0,則表示是第一次發(fā)送該包,如果為1,則表示為重復(fù)發(fā)送的包。

Qos0DUP必須為0

QOS: 指定了該Publish包的Qos等級(jí)如下

RETAIN: 保留標(biāo)志位,如果為1,服務(wù)器存儲(chǔ)最新一條RETAIN消息,以便分發(fā)給新的訂閱者;

2.4. PUBACK? 收到發(fā)布消息確認(rèn)報(bào)文解讀

PUBACK 報(bào)文是對(duì) QoS 1 等級(jí)的 PUBLISH 報(bào)文的響應(yīng)。

2.5 PUBREC? 發(fā)布消息收到

PUBREC 報(bào)文是對(duì) QoS 等級(jí) 2 PUBLISH 報(bào)文的響應(yīng)。它是 QoS 2 等級(jí)協(xié)議交換的第二個(gè)報(bào)文。

2.6 PUBRECL? 發(fā)布消息釋放報(bào)文解讀

PUBREL 報(bào)文是對(duì) PUBREC 報(bào)文的響應(yīng)。它是 QoS 2 等級(jí)協(xié)議交換的第三個(gè)報(bào)文。

2.7 PUBCOMP? 發(fā)布完成報(bào)文解讀

PUBCOMP 報(bào)文是對(duì) PUBREL 報(bào)文的響應(yīng)。它是 QoS 2 等級(jí)協(xié)議交換的第四個(gè)也是最后一個(gè)報(bào)文。

2.8 SUBSCRIBE? 訂閱主題報(bào)文解讀

?SUBSCRIBE 報(bào)文的有效載荷包含了一個(gè)主題,它們表示客戶端想要訂閱的主題,后面跟著一個(gè)字節(jié),這個(gè)字節(jié)被叫做 服務(wù)質(zhì)量要求(Requested QoS)。它給出了服務(wù)端向客戶端發(fā)送應(yīng)用消息所允許的QoS 等級(jí)。

2.9 SUBACK? 訂閱確認(rèn)報(bào)文解讀

返回碼說(shuō)明:

2.10? UNSUBSCRIBE? 取消訂閱報(bào)文解讀

??UNSUBSCRIBE 報(bào)文提供的主題與服務(wù)端持有的這個(gè)客戶端的當(dāng)前主題集合逐個(gè)字符比較。如果主題完全匹配,那么它(服務(wù)端)自己的訂閱將被刪除,否則不會(huì)有進(jìn)一步的處理。

2.11 UNSUBACK? 取消訂閱確認(rèn)

可變報(bào)頭包含等待確認(rèn)的 UNSUBSCRIBE 報(bào)文的報(bào)文標(biāo)識(shí)符。

2.12 PINGREQ? 心跳請(qǐng)求報(bào)文解讀

2.13 PINGRESP? 心跳響應(yīng)報(bào)文解讀

客戶端發(fā)送 PINGREQ 報(bào)文給服務(wù)端的。用于:

1. 在沒(méi)有任何其它控制報(bào)文從客戶端發(fā)給服務(wù)的時(shí),告知服務(wù)端客戶端還活著。

2. 請(qǐng)求服務(wù)端發(fā)送 響應(yīng)確認(rèn)它還活著。

3. 使用網(wǎng)絡(luò)以確認(rèn)網(wǎng)絡(luò)連接沒(méi)有斷開(kāi)。

14. DISCONNECT? 斷開(kāi)連接

客戶端發(fā)送 DISCONNECT 報(bào)文之后:

? 必須關(guān)閉網(wǎng)絡(luò)連接;
? 不能通過(guò)那個(gè)網(wǎng)絡(luò)連接再發(fā)送任何控制報(bào)文;

服務(wù)端在收到 DISCONNECT 報(bào)文時(shí):

? 必須丟棄任何與當(dāng)前連接關(guān)聯(lián)的未發(fā)布的遺囑消息;
? 應(yīng)該關(guān)閉網(wǎng)絡(luò)連接。

?3. MQTT接入流程


3.1 連接流程

? 設(shè)備向平臺(tái)發(fā)起 CONNECT 請(qǐng)求 , CONNECT 中攜帶鑒權(quán)信息 , 平臺(tái)拿到鑒權(quán)信息進(jìn)行鑒權(quán)。

? 鑒權(quán)通過(guò)后,如果 CLEANSESSION=0, 平臺(tái)將會(huì)加載保存的設(shè)備的一些信息 , 如果 CLEANSESSION=1, 設(shè)備沒(méi)有保存信息在平臺(tái),則不加載設(shè)備相關(guān)信息 。
?
? 返回鑒權(quán)結(jié)果 CONNACK 。

?3.2 發(fā)布消息流程

? 設(shè)備發(fā)布 Qos0 消息;
?

平臺(tái)收到上報(bào)數(shù)據(jù)點(diǎn)后保存起來(lái)

? 設(shè)備發(fā)布 Qos1 消息
? 平臺(tái)收到上報(bào)數(shù)據(jù)點(diǎn)后保存起來(lái)
? 平臺(tái)給設(shè)備回復(fù)相應(yīng)的 PUBACK

?

? 設(shè)備發(fā)布 Qos2 消息
? 平臺(tái)收到上報(bào)數(shù)據(jù)點(diǎn)后保存起來(lái)
? 平臺(tái)給設(shè)備回復(fù)相應(yīng)的 PubRec 報(bào)文
? 設(shè)備需回復(fù)平臺(tái) PubRel 報(bào)文,如超時(shí)不回平臺(tái)則會(huì)斷開(kāi)相應(yīng)連接
? 平臺(tái)給設(shè)備回復(fù) PubComp 報(bào)文

3.3 訂閱流程

設(shè)備發(fā)起訂閱請(qǐng)求;

平臺(tái)收到請(qǐng)求后更新topic列表;

平臺(tái)給設(shè)備回復(fù)SubAck;

subscriberequestqos級(jí)別可以為0、1、2。

? 設(shè)備發(fā)起取消訂閱請(qǐng)求 。
? 平臺(tái)收到請(qǐng)求后更新 topic 列表 。
? 平臺(tái)給設(shè)備回復(fù) UnSubAck 。

?3.5 連接保活流程

客戶端發(fā)送 PINGREQ 報(bào)文給服務(wù)端的,服務(wù)端發(fā)送 PINGRESP 報(bào)文響應(yīng)客戶端的 PINGREQ 報(bào)文,表示服務(wù)端還活著。

3.6 斷開(kāi)連接流程

DISCONNECT 報(bào)文是客戶端發(fā)給服務(wù)端的最后一個(gè)控制報(bào)文,表示客戶端正常斷開(kāi)連接。

?4.MQTT消息QOS


級(jí)別0:最多一次,消息發(fā)送者會(huì)想盡辦法發(fā)送消息,但是遇到意外并不會(huì)重試,這一級(jí)別會(huì)發(fā)生消息丟失。

級(jí)別 1 :至少一次。消息接收者如果 沒(méi)有知會(huì)或者知會(huì)本身 丟失,消息發(fā)送者會(huì)再次發(fā)送以保證消息接收者至少會(huì)收到一次 ,這一級(jí)別會(huì)保證消息到達(dá),可能造成消息重復(fù)。

級(jí)別 2 :恰好一 次,確保消息只有一次到達(dá)。

?

?MQTT發(fā)布消息QoS保證不是端到端的,是客戶端與服務(wù)器之間的。訂閱者收到MQTT消息的QoS級(jí)別,最終取決于發(fā)布消息的QoS和主題訂閱的QoS

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/120928.html

相關(guān)文章

  • MQTT

    摘要:協(xié)議版本介紹互聯(lián)網(wǎng)的基礎(chǔ)網(wǎng)絡(luò)協(xié)議是協(xié)議消息隊(duì)列遙測(cè)傳輸是基于協(xié)議棧而構(gòu)建的已成為通信的標(biāo)準(zhǔn)為什么選擇有多好多好多么牛逼我就不說(shuō)了說(shuō)的再多不如一個(gè)一個(gè)試試完了做比對(duì)剩下的那個(gè)就是要選擇的實(shí)在不想這樣搞技術(shù)就跟著一線走發(fā)布和訂閱模型協(xié)議在網(wǎng)絡(luò)中 mqtt 協(xié)議版本: 3.1.1 MQTT 介紹 互聯(lián)網(wǎng)的基礎(chǔ)網(wǎng)絡(luò)協(xié)議是 TCP/IP協(xié)議. MQTT(消息隊(duì)列遙測(cè)傳輸)是基于 TCP/IP 協(xié)...

    lastSeries 評(píng)論0 收藏0
  • 搭建IM服務(wù) so easy

    摘要:現(xiàn)在很多網(wǎng)站都通過(guò)服務(wù)來(lái)實(shí)現(xiàn)消息推送及數(shù)據(jù)即時(shí)同步功能,即時(shí)通訊組件逐漸成為產(chǎn)品的標(biāo)配。目前國(guó)內(nèi)有很多成熟穩(wěn)定的第三方即時(shí)通訊服務(wù)廠家,比如融云。 現(xiàn)在很多網(wǎng)站、APP都通過(guò)IM服務(wù)來(lái)實(shí)現(xiàn)消息推送及數(shù)據(jù)即時(shí)同步功能,即時(shí)通訊組件逐漸成為產(chǎn)品的標(biāo)配。目前國(guó)內(nèi)有很多成熟穩(wěn)定的第三方即時(shí)通訊服務(wù)廠家,比如:融云。使用這些專(zhuān)業(yè)的服務(wù)可以提高開(kāi)發(fā)效率而且服務(wù)穩(wěn)定有保障。 如果自己DIY或者需要在...

    imccl 評(píng)論0 收藏0
  • mosquitto 與 websocket 的結(jié)合

    摘要:前言作為一個(gè)消息代理客戶端與服務(wù)端的通信時(shí)基于協(xié)議的而現(xiàn)在的主流應(yīng)用時(shí)呈現(xiàn)在瀏覽器中這意味著用戶與服務(wù)端只能通過(guò)或者這類(lèi)瀏覽器能理解的協(xié)議傳輸所以后端還要建立一個(gè)代理層將協(xié)議傳輸?shù)膬?nèi)容解析一下以協(xié)議發(fā)送到最后再由發(fā)送到硬件端在瀏覽器支持的協(xié) 前言 mosquitto 作為一個(gè)消息代理, 客戶端與 mosquitto 服務(wù)端的通信時(shí)基于 MQTT 協(xié)議的, 而現(xiàn)在的主流 web 應(yīng)用時(shí)呈...

    joy968 評(píng)論0 收藏0
  • mosquitto 與 websocket 的結(jié)合

    摘要:前言作為一個(gè)消息代理客戶端與服務(wù)端的通信時(shí)基于協(xié)議的而現(xiàn)在的主流應(yīng)用時(shí)呈現(xiàn)在瀏覽器中這意味著用戶與服務(wù)端只能通過(guò)或者這類(lèi)瀏覽器能理解的協(xié)議傳輸所以后端還要建立一個(gè)代理層將協(xié)議傳輸?shù)膬?nèi)容解析一下以協(xié)議發(fā)送到最后再由發(fā)送到硬件端在瀏覽器支持的協(xié) 前言 mosquitto 作為一個(gè)消息代理, 客戶端與 mosquitto 服務(wù)端的通信時(shí)基于 MQTT 協(xié)議的, 而現(xiàn)在的主流 web 應(yīng)用時(shí)呈...

    tomener 評(píng)論0 收藏0
  • 在Node.js下運(yùn)用MQTT協(xié)議實(shí)現(xiàn)即時(shí)通訊及離線推送

    摘要:前言前些日子了解到這樣一個(gè)協(xié)議,可以在上達(dá)到即時(shí)通訊的效果,但網(wǎng)上并不能很方便地找到一篇目前版本的在下正確實(shí)現(xiàn)這個(gè)協(xié)議的博客。 前言 前些日子了解到mqtt這樣一個(gè)協(xié)議,可以在web上達(dá)到即時(shí)通訊的效果,但網(wǎng)上并不能很方便地找到一篇目前版本的在node下正確實(shí)現(xiàn)這個(gè)協(xié)議的博客。 自己搗鼓了一段時(shí)間,理解不深刻,但也算是基本能夠達(dá)到使用目的。 本文目的為對(duì)MQTT有需求的學(xué)習(xí)者提供一定程...

    jlanglang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lewinlee

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<