0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

快速开发MQTT(二)初识MQTT

DigCore掘芯嵌入式 2019-01-10 11:15 次阅读

基本介绍

在上篇文章《快速开发MQTT(一)电子工程师眼中的MQTT》中,对比了串口连接和TCP连接,我们知道实现了连接和数据收发之后,接下来就是要考虑数据的封装、组包的事了。

比如UART传输过程中,数据被从A设备发送到B设备时,一般的都做这样的协议简单封装数据:“包头0xAA+两字节包长度LEN+1字节的LRC+数据内容”,此时B设备收到数据包就进行解析。

这一过程就是应用层面的协议。

类似的,MQTT也有报文格式,应用程序将数据填入报文包中,后通过TCP进行发送。

为了查看其报文格式,可以利用MQTT客户端工具MQTT.fx,尝试向TCP服务器发起一个连接请求。

TCP服务器继续使用上篇文章《快速开发MQTT(一)电子工程师眼中的MQTT》中提到的SSCOM工具进行模拟

交互过程如下:

TCP服务器开启,并侦听;

MQTT.fx作为客户端,向TCP服务器发起请求,发出的CONNECT报文(Hex):10 1A 00 044D 51 54 54 04 02 00 3C 00 0E 77 77 77 2E 64 69 67 63 6F 72 65 2E 63 6E;

TCP服务器接收到该请求,TCP服务器此刻该回复(Hex):20 02 00 00;

完成连接请求。

以下为交互过程截图:

配置TCPServer和MQTT.fx客户端,需要填写一致的IP地址和端口

MQTT.fx发起连接时,TCPServer接收到的完整数据包内容

TCPServer通过发送栏,回复数据(Hex):2002 00 00

至此,MQTT的连接流程完成,并且MQTT.fx客户端显示已连接的状态。通过这一模拟的过程,我们能够清晰认识到MQTT文档中的报文格式定义已经协议规范的定义。

对以上的数据分析,我们很容易就和MQTT-3.1.1版本规范进行对应:

客户端发的数据是10 1A 00 04 4D 51 54 54 04 02 00 3C 00 0E 77 77 77 2E 64 69 67 63 6F 72 65 2E 63 6E

解析如下:

固定报头:0x10 1A,即报文类型是1,长度是26个字节(0x1A)

可变报头:

0x00 04 4D 51 54 54,此处定义了协议名,长度是4,协议名是”MQTT”;

0x04,协议级别;

0x02,连接标志;

0x00 3C,保持连接,以秒为单位的时间间隔;

有效载荷:

0x00 0E,有效载荷内容的长度

0x77 77 77 2E 64 69 67 63 6F 72 65 2E 63 6E,客户端标识符www.digcore.cn

TCPServer回复的数据是20 0200 00

解析如下:

固定报头:0x20 02,即报文类型是2,长度是2个字节(0x02)

可变报头:0x00 00,即连接确认标志和连接返回码

在实际开发过程中,可以利用SSCOM工具作为服务器式验证自己编写的MQTT客户端程序是否正确发出数据,另外也可以作为客户端验证与MQTT服务器的正确交互。

既然TCP连接后就已经实现了数据收发的功能,为什么应用层还有这么多的通信协议:HTTP、FTP、MQTT等。

这就有区别于串口,毕竟串口在通信时是有着导线直接相连,而基于TCP连接的通信,在复杂的计算机网络中,准确找对一个终端并与之交互数据,这中间需要做的是靠应用层的协议进行握手、确认等交互,有着“一回生二回熟三回四回热炕头”这么一个啰嗦的过程。

协议框架

MQTT框架模型非常清晰看到,服务器实现了该协议的最主要功能,对数据和指令进行“转发”。

★★★★★推荐文章

《【嵌入式编程】平台大小端存储差异解决办法》

《嵌入式硬件通信接口-使用RingBuffer处理数据(二)详细设计过程》

《嵌入式硬件通信接口-使用RingBuffer处理数据(一)》

《快速开发MQTT(一)电子工程师眼中的MQTT》

《快速开发MQTT(二)初识MQTT》

《MQTT客户端搭建-最清晰的MQTT协议架构》

《MQTT服务端搭建-最快方式验证自己开发的客户端》

★★★★★相似文章

《嵌入式硬件通信接口协议-UART(五)数据包设计与解析》

《嵌入式硬件通信接口协议-UART(四)设计起止式的应用层协议》

《嵌入式硬件通信接口协议-UART(三)快速使用串口及应用》

《嵌入式硬件通信接口协议-UART(二)不同电气规范下的标准》

《嵌入式硬件通信接口协议-UART(一)协议基础》

《嵌入式硬件通信接口协议-SPI(二)分层架构设计模拟接口》

《嵌入式硬件通信接口协议-SPI(一)协议基础》

★★★★★扩展阅读

《【硬件电路】AltiumDesigner18规则检查含义》

《【硬件电路】N沟道、P沟道MOS管基本原理与应用案例》

文章首发于同名微信公众号:DigCore

欢迎关注同名微信公众号:DigCore,及时获取最新技术博文。

原文链接:https://mp.weixin.qq.com/s/hY3y0EpWLeya3YkWwvU1lQ

(说明:此处的文章从微信公众号拷贝而来,排版事宜由电子说工作人员编辑,可能存在一定的瑕疵,欢迎点击原文链接阅读)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • MQTT
    +关注

    关注

    5

    文章

    651

    浏览量

    22504
  • MQTT协议
    +关注

    关注

    0

    文章

    97

    浏览量

    5369
收藏 人收藏

    评论

    相关推荐

    低功耗4G模组:MQTT通信功能

    ​今天我们来学习使用合宙Air708E开发板的MQTT通信基本功能。 一、MQTT介绍 MQTT是一种低开销、低带宽占用的即时通讯协议,可以用极少的代码和带宽为远程设备提供实时可靠的消
    的头像 发表于 11-01 07:26 230次阅读

    MQTT调试助手中文版(物联网开发必备)

    MQTT调试助手中文版(物联网开发必备)。 支持模拟设备链接各种MQTT云服务器、  阿里云、腾讯云、华为云、原子云、onenet等等。
    发表于 10-12 14:23 6次下载

    MQTT协议网关的工作原理及功能特性

    在物联网的快速发展中,MQTT协议网关作为连接物联网设备与消息代理服务器的重要桥梁,扮演着不可或缺的角色。MQTT是一种基于发布/订阅模式的轻量级通信协议,特别适用于低带宽、不稳定网络环境下
    的头像 发表于 09-18 17:00 491次阅读
    <b class='flag-5'>MQTT</b>协议网关的工作原理及功能特性

    MQTT网关:物联网中的关键桥梁

    MQTT网关:物联网中的关键桥梁 在物联网(IoT)的广阔世界中,MQTT网关扮演着至关重要的角色。MQTT,全称为Message Queuing Telemetry Transport,是一种
    的头像 发表于 08-22 14:15 408次阅读
    <b class='flag-5'>MQTT</b>网关:物联网中的关键桥梁

    MQTT应用看这篇!合宙Air780EP_LuatOS_MQTT应用指南

    Air780EP 是合宙的低功耗4G模组之一,支持LuatOS的脚本二次开发,即使是不太懂技术的老板,也能轻松使用 Air780EP开发产品。 本文应各位大佬邀请,详细讲解了Air780EP 的MQTT的应用教程!
    的头像 发表于 08-08 17:13 1939次阅读
    <b class='flag-5'>MQTT</b>应用看这篇!合宙Air780EP_LuatOS_<b class='flag-5'>MQTT</b>应用指南

    PLC转MQTT网关快速实现PLC转MQTT协议

    PLC(可编程逻辑控制器)转MQTT网关BL10是连接工业自动化系统与物联网平台的重要设备,那它都有哪些功能特点以及它的应用场景有哪些呢?我们一起来看看。
    的头像 发表于 07-31 13:36 766次阅读
    PLC转<b class='flag-5'>MQTT</b>网关<b class='flag-5'>快速</b>实现PLC转<b class='flag-5'>MQTT</b>协议

    MQTT物联网平台是什么

    MQTT物联网平台是一种软件平台,它基于MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议,为物联网(IoT)设备提供连接、管理和数据处理的服务
    的头像 发表于 07-18 14:22 593次阅读

    通过MQTT网关快速对接工业物联网云平台

    通过MQTT网关快速对接工业物联网云平台 一、MQTT协议的优势 MQTT协议设计之初便充分考虑了资源受限环境下的高效通信需求,其发布/订阅模式能够有效减少网络带宽消耗与设备资源占用。
    的头像 发表于 05-20 15:40 476次阅读
    通过<b class='flag-5'>MQTT</b>网关<b class='flag-5'>快速</b>对接工业物联网云平台

    为什么使用MQTT而不是HTTP?

    MQTT协议通过TCP/IP运行,基于无损通信的双向发布-订阅模型,确保MQTT消息高效无损地传递。
    发表于 04-28 11:07 927次阅读
    为什么使用<b class='flag-5'>MQTT</b>而不是HTTP?

    MQTT物联网平台是什么?MQTT物联网平台的功能

    ,易于实现,因此广泛应用于受限的环境,如机器与机器的通信(M2M)以及物联网环境(IoT)。 MQTT物联网平台通过提供一种标准化的协议和平台,实现了消息的可靠传输、设备连接管理、数据存储和分析等功能,方便开发人员构建、连接和管理物联网设备。
    的头像 发表于 04-01 10:20 735次阅读

    MQTT网关是什么?MQTT网关的功能

    MQTT网关是支持MQTT协议的物联网网关,是一种用于连接不同设备和云端平台之间的中间件。它充当了设备和云端服务之间的数据传输桥梁。MQTT网关能够接收来自各种设备的数据,并将其发送到云端平台,同时
    的头像 发表于 03-18 17:10 812次阅读

    MQTT协议网关解决方案设计与实施

    的主要功能包括协议转换、消息过滤、安全认证、负载均衡等,以确保消息的可靠传输和系统的稳定运行。随着物联网技术的快速发展,MQTT协议作为一种轻量级的发布/订阅消息传输协议,在物联网应用中得到了广泛的应用。MQTT协议具有低开销、
    的头像 发表于 03-11 14:07 501次阅读

    通过MQTT网关快速对接工业物联网云平台

    实现功能:实现PLC、仪器仪表、数控机床、工业机器人等各种设备快速接入MQTT工艺物联网云平台,手机端和电脑端可以随时随地查看组态工艺,远程监控设备运行状态和工艺参数,有异常马上推送报警信息
    的头像 发表于 02-29 17:15 753次阅读
    通过<b class='flag-5'>MQTT</b>网关<b class='flag-5'>快速</b>对接工业物联网云平台

    什么是MQTTMQTT协议中的方法

    MQTT是一种轻量级消息传递协议,由IBM开发,于1999年首次发布。它使用发布/订阅模式并在设备、服务器和应用程序之间转换消息。
    的头像 发表于 02-25 17:04 1344次阅读
    什么是<b class='flag-5'>MQTT</b>?<b class='flag-5'>MQTT</b>协议中的方法

    MQTT物联网平台是什么?MQTT物联网平台的功能有哪些

    ,易于实现,因此广泛应用于受限的环境,如机器与机器的通信(M2M)以及物联网环境(IoT)。 MQTT物联网平台通过提供一种标准化的协议和平台,实现了消息的可靠传输、设备连接管理、数据存储和分析等功能,方便开发人员构建、连接和管理物联网设备。
    的头像 发表于 01-24 09:23 1152次阅读