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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深度剖析MQTT協(xié)議的整個(gè)通信流程

單片機(jī)愛好者 ? 來源:單片機(jī)愛好者 ? 作者:劉韶軒 ? 2017-11-27 16:28 ? 次閱讀

MQTT,目前物聯(lián)網(wǎng)的最主要的協(xié)議,基本所有收費(fèi)的云平臺都是基于MQTT協(xié)議,比如機(jī)智云,和所有的開放云平臺比如中國移動的oneNet、百度的云平臺也都支持MQTT的接入。雖然MQTT很火,但是目前對MQTT的很少,尤其是在如何移植到嵌入式上來。大部分的平臺商的做法都是跟模塊商合作把MQTT協(xié)議集成到WiFi模塊跟GPRS模塊里面,捆綁一銷售,不讓用戶過多的了解物聯(lián)網(wǎng)最核心的東西。

在還沒有深入去了解MQTT協(xié)議之前,總以為是非常復(fù)雜的東西,畢竟之前一直想深入,但無奈在浩淼的網(wǎng)絡(luò)里居然找不到太多實(shí)質(zhì)的資料。隨時(shí)自己對物聯(lián)網(wǎng)的不斷探索,越來越了解整個(gè)物聯(lián)網(wǎng)的架構(gòu),對MQTT了解越來越深入。在這篇文章中將帶大家先了解MQTT的協(xié)議,在后面的文章,再帶大家怎么移植MQTT到STM32上,再到怎么搭建自己的MQTT服務(wù)器。

MQTT的基礎(chǔ)知識這些大家通過百度知道都可以了解到,這里主要深入去剖析MQTT協(xié)議的整個(gè)通信流程。但是如果只是看文字話,大家很難理解。因此我們借助Windows下的MQTT客戶端MQTT.fx跟網(wǎng)絡(luò)抓包工具Wireshark來一步步分析MQTT。

名字 流向 描述
CONNECT 1 C->S 客戶端請求與服務(wù)端建立連接
CONNACK 2 S->C 服務(wù)端確認(rèn)連接建立
PUBLISH 3 CóS 發(fā)布消息
PUBACK 4 CóS 收到發(fā)布消息確認(rèn)
PUBREC 5 CóS 發(fā)布消息收到
PUBREL 6 CóS 發(fā)布消息釋放
PUBCOMP 7 CóS 發(fā)布消息完成
SUBSCRIBE 8 C->S 訂閱請求
SUBACK 9 S->C 訂閱確認(rèn)
UNSUBSCRIBE 10 C->S 取消訂閱
UNSUBACK 11 S->C 取消訂閱確認(rèn)
PING 12 C->S 客戶端發(fā)送PING(連接保活)命令
PINGRSP 13 S->C PING命令回復(fù)
DISCONNECT 14 C->S 斷開連接

上面是MQTT的主要的通信協(xié)議,MQTT是基于TCP長連接,首先是先跟MQTT服務(wù)器建立TCP連接,然后發(fā)送登錄請求,要保持長連接,還要定時(shí)發(fā)心跳包跟服務(wù)保持連接。我們先用MQTT.fx來登錄開源的MQTT服務(wù)看看。

安裝好MQTT.fx(注意MQTT.fx是java開發(fā)的,電腦要安裝JDK才能安裝打開),一打開里面就默認(rèn)有一個(gè)開源的MQTT服務(wù)M2M Eclipse。點(diǎn)開旁邊的齒輪(設(shè)置按鈕)可以看服務(wù)器的域名m2m.eclipse.org,端口號1833(MQTT的默認(rèn)端口號),下面還有個(gè)Keep Alive Interval就是心跳的時(shí)間。再打開Wireshark,選擇要捕獲的網(wǎng)絡(luò)接口,然后再過濾器輸入tcp.port==1883后回車,只捕獲1883這個(gè)端口號的數(shù)據(jù)包。再點(diǎn)下MQTT.fx的Connect連接服務(wù)器,就可以看到Wireshark捕到的數(shù)據(jù)


可以看到MQTT協(xié)議中本地給服務(wù)器發(fā)送了一個(gè)Connect登錄請求,然后,服務(wù)器回應(yīng)一個(gè)ACK,表示登錄成功。再雙擊Connect Command這條數(shù)據(jù)包,我們可以看到詳細(xì)的數(shù)據(jù)包數(shù)據(jù)

上面的解析出來的MQTT協(xié)議包的內(nèi)部,下面是對應(yīng)的二進(jìn)制數(shù)據(jù),這里我們可以對照附件上資料去了解協(xié)議的內(nèi)容。看這里,大家想是不是如果自己用TCP,再封裝發(fā)送下面的二進(jìn)制數(shù)據(jù)就可以完成MQTT的登錄了呢?拿出網(wǎng)絡(luò)調(diào)試助手來,ping下m2m.eclipse.org得到IP地址,用端口號1883連接,然后發(fā)送Wireshark捕到的MQTT登錄協(xié)議的二進(jìn)制數(shù)據(jù),可以看到到服務(wù)器回應(yīng)了20 02 00 00表示登錄成功。

再往下Wireshark捕到的數(shù)據(jù)包,可以看到每隔一定的時(shí)間,本地向服務(wù)器發(fā)送Ping Request心跳包,相應(yīng)的服務(wù)器也會回應(yīng)Ping Response。

接下來看MQTT最核心的傳輸協(xié)議Subcribe(定閱)和Publish(推送)。簡單來說就是客戶端口(比如物聯(lián)網(wǎng)硬件)Subcribe一個(gè)topic(主題)后,其它的客戶端(比如手機(jī))向服務(wù)器往這個(gè)topic推送Payload(有效數(shù)據(jù)),服務(wù)器就會把Payload轉(zhuǎn)發(fā)給定閱這個(gè)topic的客戶端(硬件)。

這樣就實(shí)現(xiàn)了客戶端(手機(jī))通過服務(wù)器(MQTT)遠(yuǎn)程發(fā)送數(shù)據(jù)給客戶端(物聯(lián)網(wǎng)硬件)。一樣用MQTT.fx來實(shí)驗(yàn)。先點(diǎn)Subscribe然后面下面輸入led再點(diǎn)旁邊的Subscribe按鈕來定閱led這個(gè)topic。然后回到Publish,一樣在輸入框輸入led這個(gè)topic,下面大框就是輸入要推送的數(shù)據(jù),輸入on,再點(diǎn)Publish按鈕,就把數(shù)據(jù)推送出去了。再回到Subcribe界面來可以看到右邊已經(jīng)收到有推送過來的數(shù)據(jù)。如果這是硬件收到這個(gè)指令,就可以去控制點(diǎn)亮LED,我們就實(shí)現(xiàn)遠(yuǎn)程控制LED燈。

想深入了解MQTT這一個(gè)過程的話,我們再回到Wireshark,來看看捕獲到的數(shù)據(jù)

具體的就不詳細(xì)的分析了,大家看附件的文檔來對照就可以很容易了解到。

最后來了解下QoS(定閱等級),分0、1、2三個(gè)等級,簡單來說是等級越高越可靠。QoS0,就是推送之后就完事了,至于對方有沒有收到,收到是什么,數(shù)據(jù)有沒有丟失,都不管。

QoS1的話就是你收到推送后,你還得返回一個(gè)puback給對方,告訴對方收到了,不然對方會以為你沒收到,隔一段時(shí)間后重新給你推送,直到你給對方返回一個(gè)Puback為止。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 物聯(lián)網(wǎng)
    +關(guān)注

    關(guān)注

    2914

    文章

    45007

    瀏覽量

    377695
  • MQTT
    +關(guān)注

    關(guān)注

    5

    文章

    655

    瀏覽量

    22746

原文標(biāo)題:物聯(lián)網(wǎng)核心之MQTT

文章出處:【微信號:gh_dae0718828df,微信公眾號:gh_dae0718828df】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    RK3568-MQTT通信協(xié)議案例

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

    TLT507-MQTT通信協(xié)議案例

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

    MQTT協(xié)議通信 - 第1節(jié)

    通信MQTT協(xié)議
    充八萬
    發(fā)布于 :2023年09月01日 14:37:46

    MQTT協(xié)議通信 - 第13節(jié)

    通信MQTT協(xié)議
    充八萬
    發(fā)布于 :2023年09月01日 14:47:48

    MQTT協(xié)議通信 - 第14節(jié)

    通信MQTT協(xié)議
    充八萬
    發(fā)布于 :2023年09月01日 14:48:38

    資料共享:嵌入式網(wǎng)絡(luò)那些事LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練

    嵌入式網(wǎng)絡(luò)那些事LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練
    發(fā)表于 06-12 13:43

    嵌入式網(wǎng)絡(luò)那些事LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練

    本帖最后由 lee_st 于 2018-4-3 09:43 編輯 嵌入式網(wǎng)絡(luò)那些事LwIP協(xié)議深度剖析與實(shí)戰(zhàn)演練
    發(fā)表于 04-02 10:44

    C語言深度剖析

    C語言深度剖析[完整版].pdfC語言深度剖析[完整版].pdf (919.58 KB )
    發(fā)表于 03-19 05:11

    請問MQTT協(xié)議整個(gè)通信流程是怎樣的?

    請問MQTT協(xié)議整個(gè)通信流程是怎樣的?
    發(fā)表于 10-27 06:27

    如何利用mqtt協(xié)議實(shí)現(xiàn)的通信服務(wù)?

    如何利用mqtt協(xié)議實(shí)現(xiàn)的通信服務(wù)?
    發(fā)表于 10-27 06:41

    MQTT協(xié)議的相關(guān)資料分享

    前言搞智能家居就不得不說到網(wǎng)絡(luò)通信,因?yàn)槲覀冃枰ㄟ^各種終端去控制我們的智能家居設(shè)備,所以網(wǎng)絡(luò)通信這方面是必備的.而在市面上比較流行的網(wǎng)絡(luò)通訊協(xié)議就是MQTT
    發(fā)表于 01-20 07:11

    MQTT協(xié)議的相關(guān)資料推薦

    本篇目標(biāo)一、學(xué)習(xí)MQTT協(xié)議二、發(fā)送溫度濕度到OneNET準(zhǔn)備材料感覺麻煩的小伙伴請移步到文末,里面有整個(gè)工程的鏈接。一、合泰例程鏈接:https://leoeinstein.lanzous.com
    發(fā)表于 01-25 06:19

    mqtt-v3.1.1版協(xié)議

    mqtt-v3.1.1版協(xié)議,英文版,時(shí)間2014.10.29,物聯(lián)網(wǎng)通信協(xié)議MQTT
    發(fā)表于 10-29 11:22 ?0次下載

    MQTT 協(xié)議:機(jī)器對機(jī)器通信的解決方案?

    MQTT 協(xié)議:機(jī)器對機(jī)器通信的解決方案?
    的頭像 發(fā)表于 01-05 09:43 ?901次閱讀

    基于MQTT協(xié)議的車云通信設(shè)計(jì)

    隨著智能汽車的發(fā)展,車云通信的功能場景及數(shù)據(jù)量也逐漸增多,具有輕量化、可靠性等特點(diǎn)的MQTT協(xié)議成為很多OEM車云通信協(xié)議的選擇。本文主要介紹。 什么是
    的頭像 發(fā)表于 01-08 10:24 ?311次閱讀
    基于<b class='flag-5'>MQTT</b><b class='flag-5'>協(xié)議</b>的車云<b class='flag-5'>通信</b>設(shè)計(jì)
    主站蜘蛛池模板: 欧美午夜精品久久久久久黑人 | 女人扒开腿让男人桶到爽 | 四虎新地址4hu 你懂的 | 欧美午夜视频在线 | 四虎影院观看 | 福利视频自拍 | 免费一级特黄特色大片在线观看 | 亚洲精品中文字幕乱码三区一二 | 高清配种视频xxxxx | 亚洲三级小视频 | 狠狠要| 西西人体www303sw大胆高清 | 免费观看黄网站 | 中文字幕日本一区波多野不卡 | 天天干天天色综合网 | 五月婷婷激情视频 | 中文字幕日本一区波多野不卡 | 久久影院朴妮唛 | 天堂在线天堂最新版在线www | 国产福利不卡一区二区三区 | 亚洲第一视频在线 | 天天插天天干天天射 | 婷婷五月在线视频 | 日本黄色免费网站 | 男女一进一出抽搐免费视频 | 爱搞逼综合 | 欧美性精品 | 日本一区二区三区视频在线 | 国产亚洲精品仙踪林在线播放 | 免费日本黄色网址 | 久久亚洲精品国产亚洲老地址 | 亚洲免费一 | 免费看av的网址 | 国产亚洲精品成人一区看片 | 国产午夜在线观看视频 | 一区二区福利 | 婷婷激情综合 | 中出丰满大乳中文字幕 | 日本三级日本三级人妇三级四 | 免费看美女的逼 | 又粗又大的机巴好爽欧美 |