在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文讀懂物聯網中的MQTT協議

嵌入式情報局 ? 來源:嵌入式情報局 ? 2023-10-17 09:40 ? 次閱讀

物聯網曾被認為是繼計算機、互聯網之后,信息技術行業的第三次浪潮。隨著基礎通訊設施的不斷完善,尤其是 5G 的出現,進一步降低了萬物互聯的門檻和成本。物聯網本身也是 AI區塊鏈應用很好的落地場景之一,各大云服務商也在紛紛上架物聯網平臺和服務。

物聯網通訊是物聯網的一個核心內容,目前物聯網的通訊協議并沒有一個統一的標準,比較常見的有MQTT、CoAP、DDS、XMPP 等,在這其中,MQTT(消息隊列遙測傳輸協議)應該是應用最廣泛的標準之一。目前,MQTT 已逐漸成為 IoT 領域最熱門的協議,也是國內外各大物聯網平臺最主流的傳輸協議,阿里云 IoT 物聯網平臺很多設備都是通過 MQTT 接入。

1、MQTT 簡介

《MQTT 協議規范中文版》一書中對 MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)進行了描述:

MQTT 是一種基于客戶端服務端架構的發布/訂閱模式的消息傳輸協議。它的設計思想是輕巧、開放、簡單、規范,易于實現。這些特點使得它對很多場景來說都是很好的選擇,特別是對于受限的環境如機器與機器的通信M2M)以及物聯網環境(IoT)。----MQTT 協議中文版

與HTTP 協議一樣,MQTT 協議也是應用層協議,工作在 TCP/IP 四層模型中的最上層(應用層),構建于 TCP/IP協議上。MQTT 最大優點在于,可以以極少的代碼和有限的帶寬,為連接遠程設備提供實時可靠的消息服務。作為一種低開銷、低帶寬占用的即時通訊協議,使其在物聯網、小型設備、移動應用等方面有較廣泛的應用。

如今,MQTT 成為了最受歡迎的物聯網協議,已廣泛應用于車聯網、智能家居、即時聊天應用和工業互聯網等領域。目前通過 MQTT 協議連接的設備已經過億,這些都得益于 MQTT 協議為設備提供了穩定、可靠、易用的通信基礎。

2、MQTT 的主要特性

MQTT 協議是為工作在低帶寬、不可靠網絡的遠程傳感器和控制設備之間的通訊而設計的協議,它具有以下主要的幾項特性:

①、使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合

②、基于 TCP/IP 提供網絡連接。主流的 MQTT 是基于 TCP 連接進行數據推送的,但是同樣也有基于 UDP 的版本,叫做 MQTT-SN。

③、支持 QoS 服務質量等級。根據消息的重要性不同設置不同的服務質量等級。

④、小型傳輸,開銷很小,協議交換最小化,以降低網絡流量。這就是為什么在介紹里說它非常適合"在物聯網領域,傳感器與服務器的通信,信息的收集",要知道嵌入式設備的運算能力和帶寬都相對薄弱,使用這種協議來傳遞消息再適合不過了,在手機移動應用方面,MQTT 是一種不錯的 Android 消息推送方案。

⑤、使用 will 遺囑機制來通知客戶端異常斷線。

⑥、基于主題發布/訂閱消息,對負載內容屏蔽的消息傳輸。

⑦、支持心跳機制。

3、MQTT 歷史

MQTT 協議最初版本是在 1999 年建立的,該協議的發明人是的 Andy Stanford-Clark 和 Arlen Nipper。

MQTT 最初是用于石油管道的傳感器與衛星之間數據傳輸。他們當時正在開發一個利用衛星通訊監控輸油管道的項目,為了實現這個項目要求,他們需要開發一種用于嵌入式設備的通訊協議,這種通訊協議必須滿足以下條件:

易于實現,服務器必須要實現成千上萬個客戶端的接入

數據傳輸的服務質量可控,根據數據的重要性和特性,設置不同等級的服務質量

占用帶寬小,單次數據量小,但不能出錯

必須能夠適應高延遲、掉線、斷網等網絡通信不可靠的風險

設備連接狀態可知,云端與設備端保持長連接

通過以上幾個條件可知:

MQTT 服務器可以連接大量的遠程傳感器和控制設備,與遠程客戶端保持長連接,具有一定的實時性。

云端向設備端發送消息,設備端可以在最短的時間內接收到并作出回應。

MQTT 更適合需要實時控制的場合,尤其適合執行器。

云端與客戶端需要保持長連接,要能夠獲取到設備的連接狀態,就需要時不時地發送心跳包,這就不會省電,所以,MQTT 并不適合低功耗場合。

可以看出,MQTT 從誕生之初就是專為低帶寬、高延遲或不可靠的網絡而設計的。雖然歷經幾十年的更新和變化,以上這些特點仍然是 MQTT 協議的核心特點。但是與最初不同的是,MQTT 協議已經從嵌入式系統應用拓展到開放的物聯網(IoT)領域。

4、MQTT 版本

目前 MQTT 主流版本有兩個,分別是 MQTT3.1.1 和 MQTT5。MQTT3.1.1 是在 2014 年 10 月發布的,而 MQTT5 是在 2019 年 3 月發布的。雖然 MQTT3.1.1 與 MQTT5 在時間相差了將近五年,但是 MQTT3.1.1作為一個經典的版本,目前仍然是主流版本,能夠滿足大部分實際需求。

MQTT5 是在 MQTT3.1.1 的基礎上進行了升級,因此 MQTT5 是完全兼容 MQTT3.1.1 的。而 MQTT5 是 在 MQTT3.1.1 的基礎上添加了更多的功能、補充完善 MQTT 協議。

2dd63b88-6c31-11ee-939d-92fbcf53809c.png

5、MQTT 協議

MQTT 是一種基于客戶端-服務端架構(C/S)的消息傳輸協議,所以在 MQTT 協議通信中,有兩個最為重要的角色,它們便是服務端和客戶端。

1)服務端

MQTT 服務端通常是一臺服務器(broker),它是 MQTT 信息傳輸的樞紐,負責將 MQTT 客戶端發送來的信息傳遞給 MQTT 客戶端;MQTT 服務端還負責管理 MQTT 客戶端,以確保客戶端之間的通訊順暢,保證 MQTT 信息得以正確接收和準確投遞。

2)客戶端

MQTT 客戶端可以向服務端發布信息,也可以從服務端收取信息;我們把客戶端發送信息的行為稱為“發布”信息。而客戶端要想從服務端收取信息,則首先要向服務端“訂閱”信息。“訂閱”信息這一操作很像我們在使用微信時“關注”了某個公眾號,當公眾號的作者發布新的文章時,微信官方會向關注了該公眾號的所有用戶發送信息,告訴他們有新文章更新了,以便用戶查看。

3)MQTT 主題

上面我們講到了,客戶端想要從服務器獲取信息,首先需要訂閱信息,那客戶端如何訂閱信息呢?這里我們要引入“主題(Topic)”的概念,“主題”在 MQTT 通信中是一個非常重要的概念,客戶端發布信息以及訂閱信息都是圍繞“主題”來進行的,并且 MQTT 服務端在管理 MQTT 信息時,也是使用“主題”來控制的。

客戶端發布消息時需要為消息指定一個“主題”,表示將消息發布到該主題;而對于訂閱消息的客戶端來說,可通過訂閱“主題”來訂閱消息,這樣當其它客戶端或自己(當前客戶端)向該主題發布消息時,MQTT 服務端就會將該主題的信息發送給該主題的訂閱者(客戶端)。

服務端如何通過“主題”來控制客戶端之間的信息通訊,看下圖實例:

2dde33ce-6c31-11ee-939d-92fbcf53809c.png

在以上圖示中一共有三個 MQTT 客戶端,它們分別是開發板、手機和電腦。MQTT 服務端在管理 MQTT通信時使用了“主題”來對信息進行管理。

比如上圖所示,假設我們需要利用手機和電腦獲取開發板在運行過程中 SoC 芯片的溫度,那么首先電腦和手機這兩個客戶端需要向 MQTT 服務器訂閱主題“芯片溫度”;接下來,當開發板客戶端向服務端的“芯片溫度”主題發布信息(假設信息的內容就是當前的溫度值)后,服務端就會首先檢查都有哪些客戶端訂閱了“芯片溫度”這一主題的信息,而當它發現訂閱了該主題的客戶端有一個手機和一個電腦,于是服務端就會將剛剛收到的“芯片溫度”信息轉發給訂閱了該主題的手機和電腦客戶端。

通過以上的這種實例,手機和電腦便可以獲取到開發板運行時 SoC 芯片的溫度值。

以上實例中,開發板是“芯片溫度”主題的發布者,而手機和電腦則是該主題的訂閱者。

值得注意的是,MQTT 客戶端在通信時,角色往往不是單一的,一個客戶端既可以作為信息發布者也可以同時作為信息訂閱者。如下圖所示:

2de264e4-6c31-11ee-939d-92fbcf53809c.png

上圖中的所有客戶端都是圍繞“LED 控制”這一主題進行通信。此時,對于“LED 控制”這一主題來說,手機和電腦客戶端成為了 MQTT 信息的發布者而開發板則成為了 MQTT 信息的訂閱者(接收者)。

所以由此可知,針對不同的主題,MQTT 客戶端可以切換自己的角色,它們可能對主題 A 來說是信息發布者,但是對于主題 B 就成了信息訂閱者,所以一個 MQTT 客戶端它的角色并不是固定的,所以大家一定要理解“主題”這個概念。

4)MQTT 發布/訂閱特性

從以上實例我們可以看到,MQTT 通信的核心樞紐是 MQTT 服務端,它負責將 MQTT 客戶端發送來的信息傳遞給 MQTT 客戶端,還負責管理 MQTT 客戶端,以確保客戶端之間的通訊順暢,保證 MQTT 信息得以正確接收和準確投遞。

正是因為有了服務端對 MQTT 信息的接收、儲存、處理和發送,客戶端在發布和訂閱信息時,可以相互獨立、且在空間上可以分離、時間上可以異步,這就是 MQTT 發布/訂閱的特性:客戶端相互獨立、空間上可分離、時間上可異步,具體介紹如下:

客戶端相互獨立:MQTT 客戶端是一個個獨立的個體,它們無需了解彼此的存在,依然可以實現信息交流。

空間上分離:空間上分離相對容易理解,MQTT 客戶端以及 MQTT 服務端它們在通信時是處于同一個通信網絡中的,這個網絡可以是互聯網或者局域網;只要客戶端聯網,無論他們遠在天邊還是近在眼前,都可以實現彼此間的通訊交流;其實網絡通信本就是如此,所以并不是 MQTT 通信所特有的。

時間上可異步:MQTT 客戶端在發送和接收信息時無需同步。這一特點對物聯網設備尤為重要,前面我們也介紹了,MQTT 從誕生之初就是專為低帶寬、高延遲或不可靠的網絡而設計的,高延遲和不可靠網絡必然就會導致時間上的異步;物聯網設備在運行過程中發生意外掉線是非常正常的情況

6、總結

向大家介紹了 MQTT 通信的基本原理,在 MQTT 通信中,1 個服務端、多個客戶端之間圍繞“主題”進行了通信,所以重要在于大家需要理解各個客戶端的相互關系以及服務端在其中所起的作用,并且理解“主題”這個概念以及 MQTT 發布/訂閱模式的特性,后面向大家介紹具體的通信過程時,要迅速的反應過來。

注意:對于 MQTT 發布/訂閱模式的特性,我們總結的幾個特點中都有一個“可”字。這個“可”字意味著客戶端彼此之間可以獨立,空間可以分離,時間可以異步。在我們實際應用中,客戶端之間的關系既可以獨立也可以相互依存。在空間上,既可以相距甚遠,也可以彼此相鄰。在時間上,既可以異步也可以同步。這個“可”字所體現的是 MQTT 通訊的靈活性。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2551

    文章

    51099

    瀏覽量

    753572
  • 物聯網
    +關注

    關注

    2909

    文章

    44635

    瀏覽量

    373365
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27541
  • MQTT協議
    +關注

    關注

    0

    文章

    97

    瀏覽量

    5374
  • TCP通信
    +關注

    關注

    0

    文章

    146

    瀏覽量

    4223

原文標題:一文讀懂物聯網中的大拿-MQTT協議

文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    聯網傳輸協議MQTT到底是個什么?

    MQTT是什么?MQTT聯網傳輸協議,它被設計用于輕量級的發布/訂閱式消息傳輸,旨在為低
    發表于 01-08 11:27

    工業無線MQTT聯網網關

    通博聯的工業聯網網關中有款采用 MQTT聯網
    發表于 02-07 14:00

    萌新闖關之聯網MQTT協議梳理

    目前大家的進度已經推進到使用聯網協議進行控制終端設備了,先頭部隊已經完整的移植了MQTT協議到我們的開發板上了,既然應用端已經實現,作為作
    發表于 11-27 00:23

    讀懂什么是NEC協議

    讀懂什么是NEC協議
    發表于 10-15 09:22

    聯網的基石-MQTT協議初識

    1、聯網的基石-mqtt協議初識隨著 5G 時代的來臨,萬互聯的偉大構想正在成為現實。聯網
    發表于 09-08 16:03

    如何采用mqtt協議實現聯網模塊消息推送?

    如何采用mqtt協議實現聯網模塊消息推送
    發表于 11-03 06:55

    教你快速讀懂MQTT網關

    MQTT種發布(publish)/訂閱(subscribe)協議MQTT協議采用發布/訂閱模式,所有的
    發表于 03-24 16:09 ?1789次閱讀

    聯網傳輸協議MQTT的優勢

    聯網傳輸協議為什么首選MQTT
    的頭像 發表于 01-09 14:46 ?4135次閱讀

    聯網傳輸協議MQTT的優勢有哪些

    MQTT聯網傳輸協議,它被設計用于輕量級的發布/訂閱式消息傳輸,旨在為低帶寬和不穩定的網絡環境
    發表于 11-26 14:23 ?3003次閱讀

    聯網協議MQTT

    的,這些特點使它適用范圍非常廣泛。在很多情況下,包括受限的環境,作為種低開銷、低帶寬占用的即時通訊協議,使其在聯網、小型設備、移動應用
    的頭像 發表于 11-22 09:53 ?1527次閱讀
    <b class='flag-5'>物</b><b class='flag-5'>聯網</b><b class='flag-5'>協議</b><b class='flag-5'>MQTT</b>

    聯網應用,為什么MQTT干掉了HTTP?

    HTTP作為當下使用最為廣泛的協議,但隨著聯網行業的發展,MQTT在過去的幾年也受到了大量
    的頭像 發表于 04-27 09:33 ?697次閱讀
    <b class='flag-5'>物</b><b class='flag-5'>聯網</b>應用<b class='flag-5'>中</b>,為什么<b class='flag-5'>MQTT</b>干掉了HTTP?

    智聯聯分享之聯網協議MQTT簡述,MQTT協議特點

    )基于客戶端/服務器的信息發布/訂閱的聯網常用傳輸協議。1999年由開發商IBM發布,MQTT協議是輕量、簡單、開放和易于實現的,這些特點
    的頭像 發表于 03-28 18:10 ?1294次閱讀
    智聯<b class='flag-5'>物</b>聯分享之<b class='flag-5'>物</b><b class='flag-5'>聯網</b><b class='flag-5'>協議</b><b class='flag-5'>MQTT</b>簡述,<b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>特點

    聯網MQTT協議概述

    MQTT協議已經成了聯網通信中的個熱詞,今天我們起來學習
    的頭像 發表于 11-25 14:09 ?1333次閱讀

    了解聯網通信協議MQTT如何助力無線模塊廣泛連接

    引言:隨著聯網技術的飛速發展,無線模塊在連接各種智能設備、實現數據交互扮演著至關重要的角色。為了有效滿 足聯網通信的多樣化需求,
    的頭像 發表于 06-07 16:10 ?1156次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>了解<b class='flag-5'>物</b><b class='flag-5'>聯網通信協議</b>之<b class='flag-5'>MQTT</b>如何助力無線模塊廣泛連接

    MQTT網關:聯網的關鍵橋梁

    MQTT網關:聯網的關鍵橋梁 在聯網(IoT)的廣闊世界
    的頭像 發表于 08-22 14:15 ?409次閱讀
    <b class='flag-5'>MQTT</b>網關:<b class='flag-5'>物</b><b class='flag-5'>聯網</b><b class='flag-5'>中</b>的關鍵橋梁
    主站蜘蛛池模板: 四虎四虎| 国产欧美高清| 国产精品久久在线| 中文字幕欧美日韩| 亚洲狠狠婷婷综合久久久久图片| 特级全黄大片| 毛片韩国| 97久久综合区小说区图片专区| 天天摸天天干| 国产女在线| 亚洲网站视频| 亚洲国内精品| 国模大尺度在线| 天天干天天上| 视频三区| 四虎4545www国产精品| 国产卡一卡2卡三卡免费视频| 国产亚洲精品成人一区看片| 在线观看日本一区| 亚洲欧美7777| 毛片网在线| 免费特黄一区二区三区视频一| 182.t v香蕉人人网站| 亚洲第一色图| 大香交伊人| 国产香蕉一区二区精品视频| 在线天堂中文新版有限公司| 日本高清色视频www| 播放欧亚一级特黄录像| 欧美成人免费午夜全| 亚洲欧美视频| 色婷婷在线视频| 成人涩涩网站| 中文字幕亚洲色图| 欧美色图久久| 天天插天天射天天干| 一区二区三区福利| 免费一级大毛片a一观看不卡| 天天综合干| 亚洲欧美色一区二区三区| 欧美一区二区三区在线观看|