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

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

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

3天內不再提示

通信協議解讀:CoAP/LWM2M協議和MQTT協議

電子設計 ? 來源:華為云IoT ? 作者:我是鹵蛋 ? 2020-12-04 14:09 ? 次閱讀

當今物聯網的主流通信協議是CoAP/LWM2M協議和MQTT協議,本文將分別解讀這些協議的工作方式,了解它們的特點,助您選擇最適合您的設備的通信協議。

通信協議又稱為傳輸協議,用于定義多個設備之間傳播信息時的系統標準。通信協議定義了設備通信中的語法、語義、同步規則和發生錯誤時的處理原則,可以理解為機器之間使用的語言。

在物聯網場景中,通信主要發生在設備和物聯網平臺之間,由于大部分物聯網設備都是資源受限型設備,它們的物理資源和網絡資源都非常有限,直接使用現有的HTTP協議進行通信對它們來說要求實在是太高了。因此,物聯網場景中主要使用的通信協議都是輕量級的,為資源受限環境而設計的通信協議,例如CoAP/LWM2M協議和MQTT協議。

本文將分別解讀CoAP/LWM2M協議和MQTT協議,希望能幫助您了解這些協議,并選擇最適合您的設備的通信協議。

CoAP/LWM2M協議

CoAP(Constrained Application Protocol,受限制的應用協議)運行于UDP協議之上,設計上主要借鑒了HTTP協議的RESTful風格,簡化了協議包格式,一個最小的CoAP數據包僅4字節。CoAP協議采用了和HTTP協議相同的請求/響應模型,客戶端發出請求后,服務端處理請求并回復響應,是一種點對點的通信模型。CoAP和HTTP一樣都是通過URI指定要訪問的資源,但CoAP協議以“coap:”或“coaps:”開頭,其中coaps的s是指消息通過DTLS協議加密。CoAP的每一條消息都是一條二進制的報文,由以下部分組成:

VER:長度2位,用于表示CoAP協議的版本號。

T:長度2位,用于表示報文類型。CoAP協議定義了四種報文類型:

CON:需要應答的報文,接受者收到該消息后需要及時回復一個ACK報文。

NON:無需應答的報文。

ACK:應答報文。

RST:復位報文,當接受者無法解析收到的報文或收到的報文中含有錯誤時,可以回復RST報文。

TKL:長度4位,用于表示Token字段的長度。

Code:長度8位,在請求消息中用于表示請求方法(GET/POST/PUT/DELETE),在響應消息中表示響應碼(與HTTP的響應碼類似)。

Message ID:長度16位,用于標識報文。主要用途有兩個,一個是服務端收到CON報文后,需要返回相同Message ID的ACK報文;另一個是重發場景下,用相同的Message ID表示這是同一條報文的重復發送。

Token:可選字段,長度由TKL決定,同樣用來標識報文。例如,有時候服務端收到CON報文(攜帶了Token)后,請求的內容無法立刻處理完成,就只能先回復一個不帶響應數據的ACK報文,待請求處理完成后再通過一個CON或者NON報文將實際響應數據帶給客戶端;此時這個報文就必須攜帶和之前的CON報文相同的Token,告訴客戶端這個報文是之前的CON報文的響應。

同理,若客戶端發送NON報文進行請求,服務端也可同樣使用NON報文進行響應,兩個報文使用Token進行關聯。除此之外,Token還可用于消息防偽造等場景,此處不再展開說明。

Options:可選字段,長度不定,作用類似于HTTP協議中的消息頭。

1 1 1 1 1 1 1 1:隔離符,用于分隔Options和Payload。

Payload:實際負載數據,即HTTP協議中的消息體,用于攜帶這條消息實際的內容,可以為空。

LWM2M協議

LWM2M(Lightweight Machine-To-Machine,輕量級M2M)協議是由由OMA(Open Mobile Alliance)提出并定義的基于CoAP協議的物聯網通信協議。LWM2M協議在CoAP協議的基礎上定義了接口、對象等規范,使得物聯網設備和物聯網平臺之間的通信更加簡潔和規范。

LWM2M協議定義了三個邏輯實體:LWM2M Server(服務端),LWM2M Client(客戶端),LWM2M Bootstrap Server(引導服務),其中LWM2M Server和LWM2M Bootstrap Server可以是同一個服務器。在這些實體間,LWM2M協議定義了四個接口:

Bootstrap:引導接口??蛻舳耸状螁雍?,可以通過該接口訪問引導服務(需要廠家提前把引導服務器的地址寫入設備),獲取服務端的地址。

Device Discovery and Registration:設備發現與注冊接口。客戶端通過該接口將自己的基本信息寫到服務端,包括自己支持哪些能力。該接口同時還可以用于升級注冊信息和注銷設備。

Device Management and Service Enablement:設備管理和業務實現接口。服務端通過該接口給客戶端下發指令,客戶端處理指令并返回響應。該接口定義了7種操作,分別是:

“Create”、“Read”、“Write”、“Delete”、“Execute”、“Write Attributes”和“Discover”。

Information Reporting:信息上報接口。LWM2M允許服務端向客戶端訂閱資源信息,客戶端被訂閱后按照接口約定的模式(事件觸發或定期)向服務端主動上報信息。

在上述接口中,服務端對客戶端進行操作時都需要指定一個具體的操作目標,例如讀某個屬性,寫某個屬性。在HTTP協議中,這種目標的指定是通過URI或者消息體內攜帶的文本消息進行指定。而LWM2M協議為了使通信消息更加簡潔,定義了對象和資源的概念。

對象是資源的集合,LWM2M協議定義了8個標準對象,給它們分別分配了0~7的對象ID,例如對象ID為5的是固件對象。考慮到拓展性,LWM2M協議也允許使用者自定義新的對象并分配對象ID。

每個對象在被使用之前必須先被實例化,因為對象都是抽象的模型,一個對象可以有多個實例,每個實例為一個單獨的邏輯實體。對象實例化時會被分配實例ID,從0開始遞增。

資源則可以理解為對象的屬性,是LWM2M協議中實際用于攜帶信息的實體。同一個對象的不同實例中的資源攜帶值可以是不同的。每個資源都需要被分配了一個資源ID,例如固件對象的固件包名稱的資源ID為6。和對象一樣,LWM2M協議也允許自定義資源。

至此,通過對象ID,實例ID和資源ID,我們就可以用三個數字指示一個具體的資源,例如5/0/6表示固件對象第一個實例的固件包名稱。在注冊階段,客戶端就會把自己支持的對象的示例寫入服務端,用于通知服務端自己支持的能力。

MQTT協議

MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸)協議運行于TCP協議之上,是一種基于發布/訂閱模型的通信協議。在發布/訂閱模型模型中,我們需要一個代理服務器(通常稱之為Broker),所有客戶端都需要和服務器建立連接,然后進行訂閱和發布。若某個客戶端發布了其他客戶端已訂閱的主題(MQTT協議中稱之為topic),服務器就會將這個主題轉發給所有已訂閱的客戶端。例如有A、B、C三個客戶端都連上了同一個服務器,B和C訂閱了“test”主題,然后A發布了一個主題為“test”的消息,服務器就會把這條消息轉發給B和C。

在物聯網場景中,物聯網平臺既是一個服務器又是一個客戶端。平臺制定一套主題規則(我們可以稱之為MQTT接口),并訂閱數據上報類接口的主題,然后只要設備使用該接口上報數據,平臺就可以接收到數據。同理,設備若想要收到平臺下發的數據,需要先訂閱數據下發類接口的主題。

MQTT消息基于文本傳輸,主要有以下三類消息:

CONNECT:當客戶端想要和服務器建立連接時,需要發送一條CONNECT消息給服務器,消息內包含自己的用戶名、密碼等信息,服務器鑒權通過后,和客戶端建立連接。若雙方想要斷開連接,則需要遵循TCP協議的四次揮手規則,才能正常斷開連接??蛻舳嗽诎l送CONNECT消息時,還可以指定“最后遺愿(last will)”消息,包括消息的主題和內容。當服務器檢測到客戶端異常斷開連接時,就會自動發布這條“最后遺愿”消息。

SUBSCRIBE:當客戶端訂閱主題時,需要發送一條SUBSCRIBE消息給服務器,指定要訂閱的主題。MQTT協議的主題表示為層次結構,類似文件系統,例如“/huawei/v1/devices”這種格式。同理,客戶端可以通過UNSUBSCRIBE消息取消訂閱指定主題。

PUBLISH:當客戶端發布消息時,需要發送一條PUBLISH消息給服務器,指定消息的主題和內容。MQTT對發布消息的內容格式不做限制,需要由各個服務提供商自行制定規范??蛻舳税l布消息時可以指定該消息是否需要保留,一個主題只能保留一條消息,被保留的消息會被代理服務器記錄,以后每個新訂閱這個主題的客戶端都會先接收到這條保留消息。

在可靠傳輸方面,MQTT協議提供三種QoS等級的實現:

QoS=0表示消息只會被發送一次,但該消息可能會丟失。

QoS=1表示確保消息會到達至少一次,但可能會造成訂閱者收到多條重復消息。

QoS=2表示確保消息會到達且僅到達一次。

QoS等級越高,消息傳輸的可靠度越高,但實現也會越復雜,對網絡和設備資源的占用也會變多,所以傳輸時選用哪個級別的QoS需要根據實際狀況選擇。

總結

在分別了解過CoAP/LWM2M協議和MQTT協議之后,我們可以得知,LWM2M協議是基于CoAP協議的一種具體規范,而MQTT協議是不同于CoAP協議的另一種傳輸協議。

CoAP/LWM2M協議基于UDP協議,服務器和客戶端之間不保持連接;通信基于請求/響應模型,與互聯網主流的HTTP協議相同,主要用于點對點的通信。CoAP/LWM2M協議針對物聯網場景定義了各種類型和標簽,支持內容協商與發現,允許設備相互探測以找到交換數據的方式;報文為極簡的二進制報文,長度更短,對設備和網絡的要求更低。

MQTT協議基于TCP協議,服務端和客戶端之間保持連接;通信基于分布/訂閱模型,可以簡單實現多對多的通信場景。MQTT協議設計簡單,易于理解和學習;報文消息基于文本,消息負載格式無限制,自由度更高,更便于調測和排障時查看和理解,但同時也需要服務提供商制定通信規范(接口文檔),設備之間才可進行有效通信。

綜上所述,CoAP/LWM2M協議和MQTT協議各有其特點,并不存在誰優誰劣,您需要根據自己的設備的應用場景選擇最適合的協議。
編輯:hfy

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

    關注

    28

    文章

    884

    瀏覽量

    40311
  • 物聯網
    +關注

    關注

    2909

    文章

    44639

    瀏覽量

    373409
  • HTTP
    +關注

    關注

    0

    文章

    505

    瀏覽量

    31232
  • MQTT協議
    +關注

    關注

    0

    文章

    97

    瀏覽量

    5381
收藏 人收藏

    評論

    相關推薦

    MQTT.fx 連接Onenet 多協議接入平臺 MQTT協議(舊版)詳解

    ip 端口 LwM2M nbiotbt.heclouds.com 183.230.40.40 (coap)5683,(coaps)5684 MQTT mqtt
    的頭像 發表于 09-30 15:20 ?708次閱讀
    <b class='flag-5'>MQTT</b>.fx 連接Onenet 多<b class='flag-5'>協議</b>接入平臺 <b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>(舊版)詳解

    PROFINET通信協議是什么

    PROFINET通信協議是一種專為工業自動化領域設計的基于以太網的實時通信協議。以下是對PROFINET通信協議的詳細解析,包括其定義、特點、體系結構、工作原理、通信方式、應用領域以及
    的頭像 發表于 09-25 18:13 ?1663次閱讀

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

    一 概述 MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸協議),是一種基于發布/訂閱(publish/subscribe)模式的“輕量級”通訊協議
    的頭像 發表于 09-20 17:08 ?1452次閱讀
    物聯網行業中<b class='flag-5'>MQTT</b><b class='flag-5'>通信協議</b>詳解以及使用

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

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

    簡單認識UART通信協議

    UART(Universal Asynchronous Receiver/Transmitter,通用異步收發傳輸器)通信協議是一種常見的串行通信協議,廣泛應用于計算機、嵌入式系統、傳感器、無線通信
    的頭像 發表于 07-25 18:07 ?1465次閱讀

    簡單認識I2C通信協議

    I2C(Inter-Integrated Circuit)通信協議是由飛利浦公司(現為恩智浦半導體)開發的一種簡單、雙向二線制同步串行總線協議。自1982年發布以來,I2C
    的頭像 發表于 07-25 18:06 ?1467次閱讀

    鋇錸協議網關輕松實現Modbus轉MQTT協議

    Modbus是一種在工業自動化領域廣泛使用的通信協議,以其簡單性和可靠性而著稱。然而,隨著物聯網技術的興起,傳統的Modbus協議需要與通信協議MQTT相結合,以實現更廣泛的應用場景和
    的頭像 發表于 07-23 15:51 ?361次閱讀
    鋇錸<b class='flag-5'>協議</b>網關輕松實現Modbus轉<b class='flag-5'>MQTT</b><b class='flag-5'>協議</b>

    西門子S7協議與TCP協議的區別

    在工業自動化領域,通信協議的選擇對于確保設備間的順暢通信和數據的可靠傳輸至關重要。西門子S7協議和TCP協議作為兩種常用的通信協議,各自具有
    的頭像 發表于 06-19 15:54 ?3680次閱讀

    mqtt協議和tcp協議區別

    在數字化的宇宙中,無數的信息以電脈沖的形式穿梭于無形的空間之中。它們遵循著既定的規則——通信協議,在此背景下,TCP與MQTT兩大協議赫然而立,各具特色。 TCP/IP(Transmission
    的頭像 發表于 04-30 14:02 ?1055次閱讀

    mqtt協議和tcp協議區別

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

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

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

    TLT507-MQTT通信協議案例

    TLT507-MQTT通信協議案例
    的頭像 發表于 01-26 10:06 ?869次閱讀
    TLT507-<b class='flag-5'>MQTT</b><b class='flag-5'>通信協議</b>案例

    mqtt協議和http協議區別

    的WWW文件都必須遵守這個標準。HTTP是一個基于TCP/IP通信協議來傳遞數據(HTML 文件、圖片文件、查詢結果等),屬于應用層的面向對象的協議。由于其
    的頭像 發表于 01-19 15:56 ?6940次閱讀

    RK3568-MQTT通信協議案例

    RK3568-MQTT通信協議案例
    的頭像 發表于 01-19 15:31 ?1819次閱讀
    RK3568-<b class='flag-5'>MQTT</b><b class='flag-5'>通信協議</b>案例

    lwm2m協議MQTT協議有什么區別?怎么選擇?哪個更適合物聯網?

    LwM2M(Lightweight M2M)和MQTT(Message Queuing Telemetry Transport)是兩種不同的通信協議,它們在物聯網領域有著不同的應用和特
    的頭像 發表于 01-07 10:20 ?756次閱讀
    主站蜘蛛池模板: 国产综合在线观看| 奇米视频在线观看| 噜噜噜噜天天狠狠| 午夜一级毛片不卡| 欧美人与牲动交xxxx| 91美女啪啪| 四虎成人在线视频| 日韩三级在线观看视频| 欧美人另类zooz| 国产婷婷色| 国产大毛片| 性色欧美| xx在线| 爽爽爽爽爽爽a成人免费视频| 美女操网站| 黑色丝袜美女被视频网站| 免费观看视频| 国产一区在线mmai| 色婷婷基地| 国产色婷婷精品综合在线观看 | 91黄色视屏| 恨恨操| 亚洲 欧美 自拍 另类| 都市激情综合网| xyx性爽欧美视频| 欧美在线一区二区三区| 人人干人人爽| 亚洲第二页| 夜夜偷影视| 又黄又免费的网站| 在线国产三级| 爱爱网站免费| 日本一区视频| 韩国三级视频| tube69日本| 你懂的在线观看网址| 边摸边吃奶边做视频叫床韩剧| 国模于子涵啪啪大胆| 国产 日韩 欧美 高清| 69pao强力打造免费高清| 四虎永久在线精品国产免费|