成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

工業(yè)物聯(lián)網(wǎng)核心技術(shù)——MQTT(一)

物聯(lián)網(wǎng) 工業(yè)物聯(lián)網(wǎng)
MQTT最大的優(yōu)點在于可以以極少的代碼和有限的帶寬,為遠程設(shè)備提供實時可靠的消息服務(wù)。做為一種低開銷、低帶寬占用的即時通訊協(xié)議,MQTT在物聯(lián)網(wǎng)、小型設(shè)備、移動應(yīng)用等方面有廣泛的應(yīng)用。

一、MQTT初探

1. MQTT是什么?

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協(xié)議),是一種基于發(fā)布/訂閱(Publish/Subscribe)模式的輕量級通訊協(xié)議,該協(xié)議構(gòu)建于TCP/IP協(xié)議上,由IBM在1999年發(fā)布,目前***版本為v3.1.1。MQTT***的優(yōu)點在于可以以極少的代碼和有限的帶寬,為遠程設(shè)備提供實時可靠的消息服務(wù)。做為一種低開銷、低帶寬占用的即時通訊協(xié)議,MQTT在物聯(lián)網(wǎng)、小型設(shè)備、移動應(yīng)用等方面有廣泛的應(yīng)用。

當(dāng)然,在物聯(lián)網(wǎng)開發(fā)中,MQTT不是唯一的選擇,與MQTT互相競爭的協(xié)議有XMPP和CoAP協(xié)議等,文章末尾會有一個比較和說明。

[[265227]]

2. MQTT是哪一層的協(xié)議?

眾所周知,TCP/IP參考模型可以分為四層:應(yīng)用層、傳輸層、網(wǎng)絡(luò)層、鏈路層。TCP和UDP位于傳輸層,應(yīng)用層常見的協(xié)議有HTTP、FTP、SSH等。MQTT協(xié)議運行于TCP之上,屬于應(yīng)用層協(xié)議,因此只要是支持TCP/IP協(xié)議棧的地方,都可以使用MQTT。

3. MQTT消息格式

每條MQTT命令消息的消息頭都包含一個固定的報頭,有些消息會攜帶一個可變報文頭和一個負(fù)荷。消息格式如下:

 

  1. 固定報文頭 | 可變報文頭 | 負(fù)荷 

4. 固定報文頭(Fixed Header)

MQTT固定報文頭最少有兩個字節(jié),***字節(jié)包含消息類型(Message Type)和QoS級別等標(biāo)志位。第二字節(jié)開始是剩余長度字段,該長度是后面的可變報文頭加消息負(fù)載的總長度,該字段最多允許四個字節(jié)。

剩余長度字段單個字節(jié)***值為二進制0b0111 1111,16進制0x7F。也就是說,單個字節(jié)可以描述的***長度是127字節(jié)。為什么不是256字節(jié)呢?因為MQTT協(xié)議規(guī)定,單個字節(jié)第八位(***位)若為1,則表示后續(xù)還有字節(jié)存在,第八位起“延續(xù)位”的作用。

例如,數(shù)字64,編碼為一個字節(jié),十進制表示為64,十六進制表示為0×40。數(shù)字321(65+2*128)編碼為兩個字節(jié),重要性***的放在前面,***個字節(jié)為65+128=193(0xC1),第二個字節(jié)是2(0x02),表示2×128。

由于MQTT協(xié)議最多只允許使用四個字節(jié)表示剩余長度(如表1),并且***一字節(jié)***值只能是0x7F不能是0xFF,所以能發(fā)送的***消息長度是256MB,而不是512MB。

工業(yè)物聯(lián)網(wǎng)核心技術(shù)(一):MQTT初探

表1

5. 可變報文頭(Variable Header)

可變報文頭主要包含協(xié)議名、協(xié)議版本、連接標(biāo)志(Connect Flags)、心跳間隔時間(Keep Alive timer)、連接返回碼(Connect Return Code)、主題名(Topic Name)等,后面會針對主要部分進行講解。

6. 有效負(fù)荷(Payload)

Payload直譯為負(fù)荷,可能讓人摸不著頭腦,實際上可以理解為消息主體(body)。

當(dāng)MQTT發(fā)送的消息類型是CONNECT(連接)、PUBLISH(發(fā)布)、SUBSCRIBE(訂閱)、SUBACK(訂閱確認(rèn))、UNSUBSCRIBE(取消訂閱)時,則會帶有負(fù)荷。

二、MQTT的主要特性

1. MQTT的消息類型(Message Type)

固定報文頭中的***個字節(jié)包含連接標(biāo)志(Connect Flags),連接標(biāo)志用來區(qū)分MQTT的消息類型。MQTT協(xié)議擁有14種不同的消息類型(如表2),可簡單分為連接及終止、發(fā)布和訂閱、QoS 2消息的機制以及各種確認(rèn)ACK。至于每一個消息類型會攜帶什么內(nèi)容,這里不多闡述。

工業(yè)物聯(lián)網(wǎng)核心技術(shù)(二):MQTT的主要特性

表2

2. 消息質(zhì)量(QoS)

MQTT消息質(zhì)量有三個等級,QoS 0,QoS 1和 QoS 2。

  • QoS 0:最多分發(fā)一次。消息的傳遞完全依賴底層的TCP/IP網(wǎng)絡(luò),協(xié)議里沒有定義應(yīng)答和重試,消息要么只會到達服務(wù)端一次,要么根本沒有到達。
  • QoS 1:至少分發(fā)一次。服務(wù)器的消息接收由PUBACK消息進行確認(rèn),如果通信鏈路或發(fā)送設(shè)備異常,或者指定時間內(nèi)沒有收到確認(rèn)消息,發(fā)送端會重發(fā)這條在消息頭中設(shè)置了DUP位的消息。
  • QoS 2:只分發(fā)一次。這是***級別的消息傳遞,消息丟失和重復(fù)都是不可接受的,使用這個服務(wù)質(zhì)量等級會有額外的開銷。

通過下面的例子可以更深刻的理解上面三個傳輸質(zhì)量等級。

比如目前流行的共享單車智能鎖,智能鎖可以定時使用QoS level 0質(zhì)量消息請求服務(wù)器,發(fā)送單車的當(dāng)前位置,如果服務(wù)器沒收到也沒關(guān)系,反正過一段時間又會再發(fā)送一次。之后用戶可以通過App查詢周圍單車位置,找到單車后需要進行解鎖,這時候可以使用QoS level 1質(zhì)量消息,手機App不斷的發(fā)送解鎖消息給單車鎖,確保有一次消息能達到以解鎖單車。***用戶用完單車后,需要提交付款表單,可以使用QoS level 2質(zhì)量消息,這樣確保只傳遞一次數(shù)據(jù),否則用戶就會多付錢了。

3. 遺愿標(biāo)志(Will Flag)

在可變報文頭的連接標(biāo)志位字段(Connect Flags)里有三個Will標(biāo)志位:Will Flag、Will QoS和Will Retain Flag,這些Will字段用于監(jiān)控客戶端與服務(wù)器之間的連接狀況。如果設(shè)置了Will Flag,就必須設(shè)置Will QoS和Will Retain標(biāo)志位,消息主體中也必須有Will Topic和Will Message字段。

那遺愿消息是怎么回事呢?服務(wù)器與客戶端通信時,當(dāng)遇到異常或客戶端心跳超時的情況,MQTT服務(wù)器會替客戶端發(fā)布一個Will消息。當(dāng)然如果服務(wù)器收到來自客戶端的DISCONNECT消息,則不會觸發(fā)Will消息的發(fā)送。

因此,Will字段可以應(yīng)用于設(shè)備掉線后需要通知用戶的場景。

4. 連接保活心跳機制(Keep Alive Timer)

MQTT客戶端可以設(shè)置一個心跳間隔時間(Keep Alive Timer),表示在每個心跳間隔時間內(nèi)發(fā)送一條消息。如果在這個時間周期內(nèi),沒有業(yè)務(wù)數(shù)據(jù)相關(guān)的消息,客戶端會發(fā)一個PINGREQ消息,相應(yīng)的,服務(wù)器會返回一個PINGRESP消息進行確認(rèn)。如果服務(wù)器在一個半(1.5)心跳間隔時間周期內(nèi)沒有收到來自客戶端的消息,就會斷開與客戶端的連接。心跳間隔時間***值大約可以設(shè)置為18個小時,0值意味著客戶端不斷開。

5. MQTT其他特點

(1) 異步發(fā)布/訂閱實現(xiàn)

發(fā)布/訂閱模式解耦了發(fā)布消息的客戶(發(fā)布者)與訂閱消息的客戶(訂閱者)之間的關(guān)系,這意味著發(fā)布者和訂閱者之間并不需要直接建立聯(lián)系。

這個模式有以下好處:

  • 發(fā)布者與訂閱者只需要知道同一個消息代理即可;
  • 發(fā)布者和訂閱者不需要直接交互;
  • 發(fā)布者和訂閱者不需要同時在線。

由于采用了發(fā)布/訂閱實現(xiàn),MQTT可以雙向通信。也就是說MQTT支持服務(wù)端反向控制設(shè)備,設(shè)備可以訂閱某個主題,然后發(fā)布者對該主題發(fā)布消息,設(shè)備收到消息后即可進行一系列操作。

(2) 二進制格式實現(xiàn)

MQTT基于二進制實現(xiàn)而不是字符串,比如HTTP和XMPP都是基于字符串實現(xiàn)。由于HTTP和XMPP擁有冗長的協(xié)議頭部,而MQTT固定報文頭僅有兩字節(jié),所以相比其他協(xié)議,發(fā)送一條消息最省流量。

接下篇《工業(yè)物聯(lián)網(wǎng)核心技術(shù)——MQTT(二)

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2019-05-15 08:40:34

工業(yè)物聯(lián)網(wǎng)MQTT物聯(lián)網(wǎng)

2022-05-07 14:31:46

物聯(lián)網(wǎng)

2019-08-16 10:16:45

2023-09-12 23:08:09

2019-01-11 08:27:06

2020-09-18 07:54:21

物聯(lián)網(wǎng)工業(yè)物聯(lián)網(wǎng)IOT

2020-12-14 16:35:51

物聯(lián)網(wǎng)萬物互聯(lián)智能制造

2019-07-11 16:30:04

智能物聯(lián)自動駕駛麥肯錫

2022-05-29 21:39:32

工業(yè)物聯(lián)網(wǎng)信息技術(shù)

2022-11-22 15:34:24

物聯(lián)網(wǎng)

2019-08-16 02:20:14

工業(yè)物聯(lián)網(wǎng)商業(yè)模式IIOT

2018-05-14 05:44:41

工業(yè)物聯(lián)網(wǎng)工業(yè)4.0自動化

2024-11-05 16:35:05

物聯(lián)網(wǎng)工業(yè)物聯(lián)網(wǎng)物聯(lián)網(wǎng)技術(shù)

2018-05-31 10:25:12

工業(yè)物聯(lián)網(wǎng)IIoT物聯(lián)網(wǎng)

2022-09-19 23:20:09

物聯(lián)網(wǎng)工業(yè)4.0工業(yè)物聯(lián)網(wǎng)

2023-11-02 11:59:04

物聯(lián)網(wǎng)預(yù)測維護

2018-07-16 06:00:34

工業(yè)物聯(lián)網(wǎng)IIoT物聯(lián)網(wǎng)

2022-11-11 11:07:33

2015-11-03 09:35:42

物聯(lián)網(wǎng)核心技術(shù)

2022-09-09 13:14:46

物聯(lián)網(wǎng)IoT
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 欧美日韩国产高清 | 国产一级视频在线播放 | 成人特级毛片 | 日本亚洲精品成人欧美一区 | 五月天国产 | 久久一区二区三区免费 | 国产精品久久久久久妇女6080 | 天天色av | 亚洲国产精品一区二区三区 | 精品免费国产一区二区三区四区介绍 | 久在线| 狠狠躁18三区二区一区 | 99re| 久久人操| 亚洲日韩中文字幕一区 | 国产精品视频yy9299一区 | 九一在线观看 | 亚洲欧美一区二区三区在线 | 日韩高清www| 黄色综合 | 午夜影院 | 日韩欧美在线视频一区 | 亚洲一区毛片 | 欧美久久久久久 | 亚洲成人一级 | 精品视频一区二区三区在线观看 | 欧美精品在线一区二区三区 | 久操av在线 | 中文字幕一区二区三区在线视频 | 日本福利视频 | 免费av手机在线观看 | 91高清在线视频 | 一区二区三区四区在线视频 | 亚洲欧美一区二区三区1000 | 狠狠狠干| 亚洲欧美日韩精品久久亚洲区 | 国产高清视频一区 | 在线只有精品 | 亚洲成人中文字幕 | 精品视频一区二区三区四区 | 久久综合影院 |