日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

我們之前已經(jīng)說(shuō)了這個(gè)SSL 和 TCP/IP 協(xié)議了,我們今天就來(lái)詳細(xì)的說(shuō)說(shuō)這個(gè) MQTT 協(xié)議,因?yàn)楹芏嘞F(xiàn)在都是支持 MQTT 協(xié)議的,比如 RabbitMQ ,還有 Kafka 等,今天我們就來(lái)詳細(xì)的介紹 MQTT 協(xié)議到底是個(gè)什么。

什么是MQTT協(xié)議

一文了解MQTT協(xié)議

 

MQTT協(xié)議是一種消息列隊(duì)傳輸協(xié)議,采用訂閱、發(fā)布機(jī)制,訂閱者只接收自己已經(jīng)訂閱的數(shù)據(jù),非訂閱數(shù)據(jù)則不接收,既保證了必要的數(shù)據(jù)的交換,又避免了無(wú)效數(shù)據(jù)造成的儲(chǔ)存與處理。因此在在物聯(lián)網(wǎng)領(lǐng)域,傳感器與服務(wù)器的通信,信息的收集中得到廣泛的應(yīng)用。

既然是協(xié)議,那么如果對(duì)比 TCP/IP協(xié)議的話,它位于分層中的哪一層呢?

之前阿粉就說(shuō)了 TCP/IP 參考模型可以分為四層:應(yīng)用層、運(yùn)輸層、網(wǎng)絡(luò)層、網(wǎng)絡(luò)接口層。TCP和UDP位于運(yùn)輸層,應(yīng)用層常見的協(xié)議有HTTP、FTP、SSH等。而 MQTT 協(xié)議運(yùn)行于 TCP 之上,屬于應(yīng)用層協(xié)議,因此只要是支持TCP/IP協(xié)議棧的地方,都可以使用MQTT。

MQTT協(xié)議主要特性

1)開放消息協(xié)議,簡(jiǎn)單易實(shí)現(xiàn)。

2)使用發(fā)布/訂閱消息模式,提供一對(duì)多的消息發(fā)布,解除應(yīng)用程序耦合。

3)對(duì)負(fù)載(協(xié)議攜帶的應(yīng)用數(shù)據(jù))內(nèi)容屏蔽的消息傳輸。

4)基于TCP/IP網(wǎng)絡(luò)連接,提供有序,無(wú)損,雙向連接。

主流的MQTT是基于TCP連接進(jìn)行數(shù)據(jù)推送的,但是同樣有基于UDP的版本,叫做MQTT-SN。這兩種版本由于基于不同的連接方式,優(yōu)缺點(diǎn)自然也就各有不同了。

5)消息服務(wù)質(zhì)量(QoS)支持,可靠傳輸保證;有三種消息發(fā)布服務(wù)質(zhì)量:

QoS0:"至多一次",消息發(fā)布完全依賴底層TCP/IP網(wǎng)絡(luò)。會(huì)發(fā)生消息丟失或重復(fù)。這一級(jí)別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無(wú)所謂,因?yàn)椴痪煤筮€會(huì)有第二次發(fā)送。這一種方式主要普通App的推送,倘若你的智能設(shè)備在消息推送時(shí)未聯(lián)網(wǎng),推送過(guò)去沒收到,再次聯(lián)網(wǎng)也就收不到了。

QoS1:"至少一次",確保消息到達(dá),但消息重復(fù)可能會(huì)發(fā)生。

QoS2:"只有一次",確保消息到達(dá)一次。在一些要求比較嚴(yán)格的計(jì)費(fèi)系統(tǒng)中,可以使用此級(jí)別。在計(jì)費(fèi)系統(tǒng)中,消息重復(fù)或丟失會(huì)導(dǎo)致不正確的結(jié)果。這種最高質(zhì)量的消息發(fā)布服務(wù)還可以用于即時(shí)通訊類的APP的推送,確保用戶收到且只會(huì)收到一次。

這個(gè) Qos0 是個(gè)什么意思呢?就是如果使用了這個(gè) Qos0 的配置作為發(fā)布質(zhì)量,我們以客戶端和服務(wù)器為例,那就是客戶端發(fā)了一個(gè)消息給服務(wù)端,這時(shí)候服務(wù)端沒有接收到,而配置是 "至多一次",這時(shí)候,相同的消息,客戶端就不會(huì)再繼續(xù)給服務(wù)端發(fā)送了,我管你收沒收到,我配置的就是最多一次.

同理,QoS1 是至少一次,也就是說(shuō),客戶端給服務(wù)端發(fā)送消息的時(shí)候,如果沒有保證消息到達(dá),這時(shí)候可能會(huì)繼續(xù)發(fā)送,我才不管我發(fā)幾次,只要你沒有給我說(shuō)你收到消息,那我就發(fā)!

而 QoS2 相對(duì)來(lái)說(shuō)就是比較嚴(yán)謹(jǐn)?shù)牧耍瑸槭裁催@么說(shuō),這就相當(dāng)于客戶端給服務(wù)端發(fā)送消息,這時(shí)候,要求保證客戶端發(fā)了一次,而服務(wù)端收到一次,這樣才是相當(dāng)于只有一次的概念。

6)小型傳輸,開銷很小(固定長(zhǎng)度的頭部是2字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡(luò)流量。

這就是為什么在介紹里說(shuō)它非常適合"在物聯(lián)網(wǎng)領(lǐng)域,傳感器與服務(wù)器的通信,信息的收集",要知道嵌入式設(shè)備的運(yùn)算能力和帶寬都相對(duì)薄弱,使用這種協(xié)議來(lái)傳遞消息再適合不過(guò)了。

MQTT 報(bào)文

  • 固定報(bào)頭(fixed header) 所有報(bào)文都包含
  • 可變報(bào)頭(variable header) 部分報(bào)文包含
  • 荷載(payload)部分報(bào)文包含

固定報(bào)頭格式如下

一文了解MQTT協(xié)議

 

固定報(bào)頭的0-3位為標(biāo)志位,第一字節(jié)的4-7位的值指定了報(bào)文類型。

報(bào)文類型值描述CONNECT1客戶端向代理發(fā)起連接請(qǐng)求CONNACK2連接確認(rèn)PUBLISH3發(fā)布消息PUBACK4發(fā)布確認(rèn)PUBREC5發(fā)布收到(QoS2)PUBREL6發(fā)布釋放(QoS2)PUBCOMP7發(fā)布完成(QoS2)SUBSCRIBE8客戶端向代理發(fā)起訂閱請(qǐng)求SUBACK9訂閱確認(rèn)UNSUBSCRIBE10取消訂閱UNSUBACK11取消訂閱確認(rèn)PINGREQ12PING請(qǐng)求PINGRESP13PING響應(yīng)DISCONNECT14斷開連接

實(shí)際上 這些類型也是 MQTT協(xié)議中定義的一些方法(也被稱為動(dòng)作),來(lái)于表示對(duì)確定資源所進(jìn)行操作。這個(gè)資源可以代表預(yù)先存在的數(shù)據(jù)或動(dòng)態(tài)生成數(shù)據(jù),這取決于服務(wù)器的實(shí)現(xiàn)。通常來(lái)說(shuō),資源指服務(wù)器上的文件或輸出。

MQTT協(xié)議實(shí)現(xiàn)方式

實(shí)現(xiàn)MQTT協(xié)議需要客戶端和服務(wù)器端通訊完成,在通訊過(guò)程中,MQTT協(xié)議中有三種身份:發(fā)布者(Publish)、代理(Broker)(服務(wù)器)、訂閱者(Subscribe)。其中,消息的發(fā)布者和訂閱者都是客戶端,消息代理是服務(wù)器,消息發(fā)布者可以同時(shí)是訂閱者。

MQTT傳輸?shù)南⒎譃椋褐黝}(Topic)和負(fù)載(payload)兩部分:

1)Topic,可以理解為消息的類型,訂閱者訂閱(Subscribe)后,就會(huì)收到該主題的消息內(nèi)容 (payload)

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

MQTT 基于訂閱與發(fā)布的消息模型

MQTT 消息發(fā)送與接收的流程:

  • ClientA 鏈接到 Broker;
  • ClientB 鏈接到 Broker,并訂閱主題 Topic1;
  • ClientA 發(fā)送給 Broker 一條消息,主題為 Topic1;
  • Broker 收到 ClientA 的消息,發(fā)現(xiàn) ClientB 訂閱了 Topic1,而后將消息轉(zhuǎn)發(fā)到 ClientB;
  • ClientB 從 Broker 接收到該消息。

和傳統(tǒng)的隊(duì)列有點(diǎn)不一樣,若是 ClientB 在 ClientA 發(fā)布消息以后再訂閱 Topic1,ClientB 不會(huì)收到該條消息。

關(guān)于 MQTT 的基礎(chǔ),阿粉就了解了這么多了,等以后阿粉學(xué)習(xí)新的關(guān)于 MQTT 的,阿粉再繼續(xù)分享給大家。

分享到:
標(biāo)簽:協(xié)議 MQTT
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定