精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

MQTT 5協議中的基礎更改(二)

虹科工業物聯網技術 ? 來源: 虹科工業物聯網技術 ? 作者: 虹科工業物聯網技 ? 2023-05-16 10:46 ? 次閱讀

上期文章中給大家介紹了MQTT規范版本5中基礎更改的信息和CONNACK返回碼,本篇文章我們繼續介紹MQTT5協議中的基礎更改中其他新功能的細節描述。

01 干凈啟動

MQTT 3.1.1的其中一個主流功能是MQTT客戶端使用清除會話(cleanSession),即這些客戶端可以通過臨時連接的方式訂閱消息或根本不訂閱消息。當連接到MQTT代理時,客戶端必須選擇發送一個標注啟用或禁用清除會話的CONNECT數據包。

在MQTT客戶端使用清除會話后,一旦出現底層TCP連接斷開、或客戶端決定斷開與代理的連接的情況,代理將會丟棄MQTT客戶端的所有數據。此外,如果在代理上存在與客戶端標識符關聯的先前會話,清除會話CONNECT數據包將強制MQTT代理刪除歷史數據。

在MQTT v5中,客戶端可以選擇使用干凈啟動(Clean Start)(由 CONNECT 消息中的“干凈啟動”標志指示)。使用這個標志時,代理會丟棄任何以前的會話數據,客戶端則會開啟新的會話。關閉客戶端和服務器之間的 TCP 連接后,會話不會被自動清理。要在客戶端斷開連接后觸發會話刪除,必須將“會話到期間隔”的新頭字段設置為值 0。

新的Clean Start功能簡化了 MQTT 的會話處理,因為它提供了更大的靈活性,并且比 cleanSession/持久會話概念更易于實現。使用 MQTT 5,除非“會話到期間隔”為 0,否則所有會話都是持久的。在超時后或客戶端使用干凈啟動重新連接時,將刪除會話。

02 額外的MQTT數據包

MQTT 5引入了一個新的MQTT數據包:AUTH數據包。這個新的數據包對于實現非簡單的認證機制非常有用。

AUTH數據包可以在建立連接后由MQTT代理和客戶端發送,以使用復雜的質詢/響應認證方法(如SASL框架中定義的SCRAM或Kerberos)。也可以用于物聯網的最先進的認證方法,如OAuth。這個數據包還允許在不關閉連接的情況下對MQTT客戶端進行重新認證。

03 新的數據類型: UTF-8字符串對

自定義報頭的出現也需要引入一種新的數據類型:UTF-8字符串對。這種字符串對本質上是一個鍵-值結構,鍵和值都是字符串數據類型,這種數據類型目前只用于自定義報頭。

有了這種新的數據類型,MQTT在網絡上共有7種不同的數據類型可以使用:

Bit

Two Byte Integer

Four Byte Integer

UTF-8 Encoded String

Variable Byte Integer

Binary Data

UTF-8 String Pair

大多數用戶通常在其 MQTT 庫的 API 中使用二進制數據和 UTF-8 編碼字符串。在 MQTT 5 中,UTF-8 字符串對也經常被使用。所有其他數據類型對用戶是隱藏的,但會被MQTT客戶端和代理制作成網絡上有效的MQTT數據包。

04 雙向的DISCONNECT數據包

在MQTT 3.1.1中,客戶端可以通過在關閉底層TCP連接之前,發送一個DISCONNECT數據包來表明它想斷開連接。MQTT代理沒有辦法通知MQTT客戶端發生了什么,并且代理將關閉TCP連接。

這一點在新的MQTT5中有所改變,現在允許代理在關閉套接字之前發送一個“MQTT DISCONNECT”包。客戶端現在能夠解釋它被斷開連接的原因并采取相應的行動,代理不需要指出確切的原因(例如出于安全原因)。但至少對于開發中的應用來說,這有助于找出代理關閉連接的原因。

當然,DISCONNECT數據包可以攜帶Reason Codes,所以很容易指出斷開連接的原因(例如在無效權限的情況下)。

05 對QoS 1和2的消息不進行重試

MQTT客戶端使用常設的TCP(或具有相同保證的類似協議)連接作為基礎傳輸。TCP連接正常時提供雙向連接,并且能保證消息符合恰好一次和按順序傳輸,因此所有客戶端或代理發送的MQTT數據包都會到達另一端。如果TCP連接中斷,而消息正在進行時,QoS 1和2會通過多個TCP 連接提供消息傳遞保證。

MQTT 3.1.1允許在TCP連接正常時重新交付MQTT消息。實際上,這可能會導致過載的MQTT客戶端得到更多的過載。試想一下,一個MQTT客戶端從MQTT代理處收到一個消息,需要11秒來處理這個消息(并且在處理后會確認數據包)。現在假設,代理會在10秒的超時后重新發送消息。這種方法沒有任何優勢,它只是占用了帶寬,并加重了MQTT客戶端的負荷。

06 使用沒有用戶名的密碼

MQTT 3.1.1要求MQTT客戶端在CONNECT數據包中使用密碼時要發送一個用戶名。對于某些用例來說,如果沒有用戶名是非常不方便的。使用 OAuth就是一個很好的例子,它使用 JSON Web 令牌作為唯一的身份驗證和授權信息。在 MQTT 3.1.1 中使用此類令牌時,經常使用靜態用戶名,因為唯一的相關信息在密碼字段中。

雖然MQTT 5 中有更簡便的方式來攜帶令牌(例如通過 AUTH 數據包),但仍然可以使用 CONNECT 數據包的密碼字段。現在,用戶只需使用密碼字段,不再需要填寫用戶名。

07 虹科HiveMQ MQTT解決方案

虹科HiveMQ 是一個基于 MQTT 數據傳輸的通信平臺,旨在將數據快速、高效、可靠地傳遞給連接的物聯網設備,HiveMQ 使用 MQTT 協議在設備和企業平臺之間進行實時、雙向的數據推送。

wKgZomRi7nuAYf7IAABNxlBCX3o67.webp

虹科HiveMQ 的建立是為了解決企業在構建新的物聯網應用時面臨的一些關鍵技術挑戰,包括:

構建可靠、可擴展的關鍵業務物聯網應用

快速的數據交付,以滿足終端用戶對響應式物聯網產品的期望

通過有效利用硬件、網絡和云資源降低運營成本

將物聯網數據整合到現有的企業系統中

虹科HiveMQ 提供免費版、專業版、企業版 MQTT Broker 產品,并提供 Kafka、企業安全及 MQTT Broker 橋接三種企業級擴展套件,HiveMQ 還提供高效的 MQTT 客戶端及云平臺,多方位滿足用戶需求。

wKgaomRi7nyACBWrAACVmsyI9Eg67.webp

更多精彩資訊 歡迎關注博主

審核編輯黃宇

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

    關注

    2894

    文章

    43312

    瀏覽量

    366409
  • MQTT
    +關注

    關注

    5

    文章

    629

    瀏覽量

    22286
收藏 人收藏

    評論

    相關推薦

    物聯網行業MQTT通信協議詳解以及使用

    在物聯網、小型設備、移動應用等方面有較廣泛的應用。 MQTT協議特點 MQTT是一個基于 客戶端-服務器 的消息發布/訂閱傳輸
    的頭像 發表于 09-20 17:08 ?89次閱讀
    物聯網行業<b class='flag-5'>中</b><b class='flag-5'>MQTT</b>通信<b class='flag-5'>協議</b>詳解以及使用

    MQTT協議網關的工作原理及功能特性

    在物聯網的快速發展MQTT協議網關作為連接物聯網設備與消息代理服務器的重要橋梁,扮演著不可或缺的角色。MQTT是一種基于發布/訂閱模式的輕量級通信
    的頭像 發表于 09-18 17:00 ?118次閱讀
    <b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>網關的工作原理及功能特性

    MQTT網關:物聯網的關鍵橋梁

    MQTT網關:物聯網的關鍵橋梁 在物聯網(IoT)的廣闊世界MQTT網關扮演著至關重要的角色。MQTT,全稱為Message Queu
    的頭像 發表于 08-22 14:15 ?190次閱讀
    <b class='flag-5'>MQTT</b>網關:物聯網<b class='flag-5'>中</b>的關鍵橋梁

    基于MQTT協議云平臺的Modbus轉MQTT網關

    鋇錸Modbus轉MQTT網關BL100是一款高性能、高性價比的物聯網網關,它支持將Modbus協議(包括Modbus RTU和Modbus TCP)的數據轉換為MQTT協議的數據格式
    的頭像 發表于 07-29 17:59 ?532次閱讀
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>云平臺的Modbus轉<b class='flag-5'>MQTT</b>網關

    mqtt協議和tcp協議區別

    帶寬和高延遲的網絡環境,尤其在物聯網環境中表現優秀。而TCP協議是面向連接的、可靠的、基于字節流的傳輸層通信協議,主要用于互聯網和局域網的數據傳輸。 2. 連接方式:MQTT
    的頭像 發表于 04-01 09:15 ?1365次閱讀

    MQTT和Modbus的物聯網網關協議的區別分析

    MQTT和Modbus的物聯網網關協議區別分析 MQTT(Message Queuing Telemetry Transport)與Modbus是兩種廣泛應用在物聯網環境的通信
    的頭像 發表于 03-18 16:50 ?607次閱讀
    <b class='flag-5'>MQTT</b>和Modbus的物聯網網關<b class='flag-5'>協議</b>的區別分析

    MQTT協議網關解決方案設計與實施

    的主要功能包括協議轉換、消息過濾、安全認證、負載均衡等,以確保消息的可靠傳輸和系統的穩定運行。隨著物聯網技術的快速發展,MQTT協議作為一種輕量級的發布/訂閱消息傳輸協議,在物聯網應用
    的頭像 發表于 03-11 14:07 ?367次閱讀

    什么是MQTTMQTT協議的方法

    MQTT是一種輕量級消息傳遞協議,由IBM開發,于1999年首次發布。它使用發布/訂閱模式并在設備、服務器和應用程序之間轉換消息。
    的頭像 發表于 02-25 17:04 ?1127次閱讀
    什么是<b class='flag-5'>MQTT</b>?<b class='flag-5'>MQTT</b><b class='flag-5'>協議</b><b class='flag-5'>中</b>的方法

    mqtt協議和http協議區別

    MQTT(Message Queuing Telemetry Transport)是一種基于發布/訂閱模式的“輕量級”通訊協議,構建于TCP/IP協議上。它是由IBM在1999年發布的。MQT
    的頭像 發表于 01-19 15:56 ?6502次閱讀

    物聯網MQTT協議概述

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

    如何實現MQTT協議數據傳輸?

    如何實現MQTT協議數據傳輸? 隨著物聯網技術的不斷發展,越來越多的設備和應用需要實現互聯互通。而MQTT作為一種輕量級的發布/訂閱消息傳輸協議,在物聯網領域應用廣泛,成為了許多設備之
    的頭像 發表于 11-15 17:23 ?990次閱讀

    MQTT是什么 MQTT特點

    很簡單,易于學習和使用。 ?可靠性高:MQTT 使用了 TCP 協議進行傳輸,具有較高的可靠性。 ?低延遲:MQTT 使用了發布/訂閱模式,可以減少消息傳遞的延遲。 在機器人應用
    的頭像 發表于 11-09 15:20 ?2139次閱讀

    MQTT協議和EDP協議該怎么選?

    OneNet支持HTTP,MQTT和EDP,HTTP好像不能下發指令,MQTT和EDP可以,我需要控制一個簡單的開關,用那個協議更合理一些。
    發表于 11-09 07:18

    MQTT協議是什么?工業級路由器網關中的MQTT協議

    什么是MQTTMQTT作為一種工具,可以在各種規模的部署連接多種類型的IoT設備。它最初始于1999年,用于石油和天然氣管道通過遠程衛星進行通信。MQTT在物聯網領域應用非常廣泛,
    的頭像 發表于 11-08 13:53 ?939次閱讀
    <b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>是什么?工業級路由器網關中的<b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>

    MQTT協議采集網關可自定義格式

    TCP協議庫和MQTT協議庫。首先,我們需要通過TCP協議與遠程設備建立連接;接著,從連接接收TCP數據包,并解析為設備地址、指令碼和數據
    發表于 10-09 19:33