中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解MQTT協議及協議原理

發布時間:2021-11-23 10:53:47 來源:億速云 閱讀:269 作者:柒染 欄目:互聯網科技

這篇文章給大家介紹如何理解MQTT協議及協議原理,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

MQTT協議

MQTT協議全稱是Message Queuing Telemetry Transport,翻譯過來就是消息隊列遙測傳輸協議,它是物聯網常用的應用層協議,運行在TCP/IP中的應用層中,依賴TCP協議,因此它具有非常高的可靠性,同時它是基于TCP協議的 <客戶端-服務器> 模型發布/訂閱主題消息的輕量級協議,也是我們常說的發送與接收數據,下面我們來初步了解一下mqtt相關的名稱與功能。

MQTT最大的優點在于可以以極少的代碼和有限的帶寬,為遠程設備提供實時可靠的消息服務。作為一種低開銷、低帶寬占用的即時通訊協議,MQTT在物聯網、小型設備、移動應用等方面有廣泛的應用。

MQTT是哪一層的協議?

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

MQTT通信模型

MQTT 協議提供一對多的消息發布,可以降低應用程序的耦合性,用戶只需要編寫極少量的應用代碼就能完成一對多的消息發布與訂閱,該協議是基于<客戶端-服務器>模型,在協議中主要有三種身份:發布者(Publisher)、服務器(Broker)以及訂閱者(Subscriber)。其中,MQTT消息的發布者和訂閱者都是客戶端,服務器只是作為一個中轉的存在,將發布者發布的消息進行轉發給所有訂閱該主題的訂閱者;發布者可以發布在其權限之內的所有主題,并且消息發布者可以同時是訂閱者,實現了生產者與消費者的脫耦,發布的消息可以同時被多個訂閱者訂閱。

MQTT通信模型示意圖如下:

如何理解MQTT協議及協議原理  
mqtt001
 

MQTT客戶端的功能:

  1. 發布消息給其它相關的客戶端。

  2. 訂閱主題請求接收相關的應用消息。

  3. 取消訂閱主題請求移除接收應用消息。

  4. 從服務端終止連接。

 

MQTT客戶服務器功能:

MQTT 服務器常被稱為 Broker(消息代理),它一般為云服務器,比如BTA三巨頭的一些物聯網平臺就是常使用MQTT協議,它是位于消息發布者和訂閱者之間,以便用于接收消息并發送到訂閱者之中,它的功能有:

  1. 接受來自客戶端的網絡連接請求。

  2. 接受客戶端發布的應用消息。

  3. 處理客戶端的訂閱和取消訂閱請求。

  4. 轉發應用消息給符合條件的已訂閱客戶端(包括發布者自身)。

 

消息主題與服務質量

什么是主題?MQTT服務器為每個連接的客戶端(訂閱者)添加一個標簽,該標簽與服務器中的所有訂閱相匹配,服務器會將消息轉發給與標簽相匹配的每個客戶端(訂閱者),當然訂閱者也是需要有權限才能訂閱對應的主題,比如像阿里云中的,訂閱者只能訂閱同一個產品下的主題,而不能跨產品訂閱,這樣子的處理就能達到信息的安全性以及多個訂閱者能及時收到消息。一個主題可以有多個級別,各個級別之間用斜杠字符分隔,例如/test 和 /test/test1/test2都 是有效的主題。

發布者與訂閱者可以通過主題名字,一般為UTF-8編碼(反正用英文字符串就不會錯)的形式發布和訂閱主題,比如我們可以直接定義一個名字為“test”的主題,絕大多數的MQTT服務器支持動態發布/訂閱主題,即當前服務器中沒有某個主題,但是客戶端直接可以向該主題發布/訂閱消息,這樣子服務器就會創建對應的主題,當然,服務器中一般也會默認提供多個系統主題,所有連接的客戶端均可訂閱。
每個客戶端與服務器建立連接后就是一個會話,客戶端和服務器之間會有狀態交互,訂閱是基于會話之上,每個訂閱中,都會包含一個主題過濾器,它是一個表達式,用于標識訂閱相關的一個或多個主題,主題過濾器可以使用通配符,因此訂閱者需要指定訂閱的主題名字與服務質量(QoS),訂閱者能訂閱多個主題,也就能接收到多個發布者發布的消息。同理,發布者也需要首先與服務器建立會話,并且指定發送的主題名字與服務質量,同時它也能向多個不同的主題發送消息。

那么什么是服務質量呢?MQTT的服務質量提供3個等級:

  1. QoS0:最多發送一次消息,在消息發送出去后,接收者不會發送回應,發送者也不會重發消息,消息可能送達一次也可能根本沒送達,這個服務質量常用在不重要的消息傳遞中,因為即使消息丟了也沒有太大關系。

  2. QoS1:最少發送一次消息(消息最少需要送達一次,也有可送達多次),QoS 1的PUBLISH報文的可變報頭中包含一個報文標識符,需要PUBACK報文確認。即需要接收者返回PUBACK應答報文。

  3. QoS2:這是最高等級的服務質量,消息丟失和重復都是不可接受的,只不過使用這個服務質量等級會有額外的開銷,這個等級常用于支付中,因為支付是必須有且僅有一次成功,總不能沒給錢或者給了多次錢吧。

關于如何理解MQTT協議及協議原理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

友谊县| 临泉县| 高密市| 乐清市| 安多县| 科尔| 洪江市| 巴彦淖尔市| 同仁县| 绥江县| 乐陵市| 冀州市| 长武县| 龙海市| 石门县| 精河县| 泗阳县| 南澳县| 久治县| 澜沧| 尚义县| 介休市| 浦东新区| 新昌县| 达拉特旗| 从化市| 农安县| 阿尔山市| 翼城县| 台东县| 华亭县| 枣阳市| 长兴县| 玛曲县| 阜阳市| 商洛市| 东平县| 华阴市| 衡水市| 商河县| 银川市|