第二章 MQTT通信协议_第1页
第二章 MQTT通信协议_第2页
第二章 MQTT通信协议_第3页
第二章 MQTT通信协议_第4页
第二章 MQTT通信协议_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章MQTT通信协议物联网的“通用语言”物联网技术简明教程|赵刚

周坤明一个真实的故事:智能灯泡是怎么“听话”的?身临其境的场景躺在沙发上轻点手机APP,客厅的智能灯泡瞬间亮起。这简单的“一指禅”背后,隐藏着怎样的空间通信秘密?跨越空间的“对话”手机与灯泡素未谋面,它们是如何跨越物理空间,实现毫秒级的精准指令传递与状态同步的呢?主角登场:MQTT协议专为物联网设计的轻量级协议,支持“主动推送”,完美解决了功耗与带宽的难题。2.1从石油管道到智能家居——MQTT协议发展历程1999诞生于工业场景由IBM与Arcom联合开发,专为卫星网络监测石油管道设计,完美适应低带宽、高延迟的恶劣网络环境。2014成为国际标准被OASIS组织采纳为推荐标准(v3.1.1),解决了兼容性难题。同年物联网概念爆发,MQTT迎来发展良机。2019协议性能飞跃发布MQTT5.0版本,新增会话过期间隔、原因代码等关键特性,大幅提升了协议的性能表现与系统扩展性。Today物联网事实标准全球超过90%的主流物联网云平台支持MQTT,成为连接智能家居、车联网与万物互联生态的核心标准协议。2.2MQTT协议介绍MQTT协议核心工作原理示意图发布者(Publisher)发送消息的“源头”。

例如:温湿度传感器、智能摄像头等设备端。主题(Topic)消息的“标签”或“频道”

例:home/livingroom/temperature。代理(Broker)消息转发的“中间人”。

通常指物联网云平台,负责匹配主题与订阅者。订阅者(Subscriber)接收消息的“终端”。

例如:手机APP、监控大屏、数据存储服务。2.3.1固定头——报文的“身份证”核心:报文类型(MessageType)MQTT协议共定义14种类型。入门只需掌握3种高频报文:CONNECT(发起连接)、PUBLISH(发布消息)、SUBSCRIBE(订阅主题)。保障:QoS服务质量等级决定消息传递的可靠性,共分为三个等级:0(最多一次)、1(至少一次)、2(只有一次)。进阶:其他关键控制位包含DUP(消息是否重复)、RETAIN(消息是否保留)等,用于处理复杂网络环境下的边缘情况。报文结构可视化示例(CONNECT)固定头位于报文最左侧,是Broker识别报文的“第一依据”。上图清晰展示了固定头如何与可变头、消息体共同构成一个完整的MQTT数据包。2.3.1QoS等级:消息的“快递服务”QoS0:至多一次含义:最多收到一次。即发布一次,不关心接收方是否接收到。可能造成数据的丢失QoS1:至少一次含义:至少收到一次。保证了一条消息至少被接收方接收到一次,有可能会接收到多次。可能会造成数据的多次接收。2.3.1QoS等级:消息的“快递服务”含义:有且仅收到一次。最严格的等级。通过四次握手确保消息“仅且唯一”送达,不丢不重。QoS2:刚好一次2.3.1主题(Topic)——消息的“地址”命名规则:层次化路径📂层级结构定义采用斜杠“/”分隔,如:home/livingroom/temperature,清晰标识数据来源。💡最佳实践建议使用英文小写,禁止特殊字符,层级控制在3-5层,避免过深难以维护。核心价值:灵活订阅层次化的主题设计,允许订阅者根据通配符灵活匹配,精准获取自己感兴趣的特定数据。图示:类文件系统的Topic树状层级结构2.3.2可变头:报文的“附加信息”💡可变头是可选的,不是所有报文都必须包含。🎯

Connect类报文:

该报文可变头包含了协议名、MQTT版本、保活时间等。📝Publish类报文:

Publish类报文的可变头用于存放发布要用的主题📊Subcscribe类报文:该报文可变头用于存放订阅类报文的唯一标识符。2.3.3有效载荷(Payload):火车的“货物”💡什么是有效载荷?它是MQTT报文中真正要传输的核心业务数据,就像火车运输的货物一样,承载了实际的业务信息。🔥物联网首选格式:JSON可读性极佳纯文本格式,人眼可直接阅读调试,降低开发门槛。跨语言全兼容Python/Java/C++等主流语言均原生支持JSON解析。📝温度传感器上报Payload示例{

"method":"report",

"params":{"temperature":25.5,"humidity":60}

}2.3.4MQTT报文的“火车结构”生动的结构隐喻将抽象的报文格式具象化理解▌核心模型:固定头+可变头+有效载荷固定头(FixedHeader)=火车头所有报文的“必须项”。决定报文类型(如CONNECT/PUBLISH)和QoS等级,是解析报文的入口。可变头(VariableHeader)=车厢装载报文的“可选元数据”。例如PUBLISH报文中的主题名(Topic)、报文标识符(PacketID)等。有效载荷(Payload)=货物真正要传输的“核心数据”。例如传感器的JSON数据`{"temp":25}`,部分控制类报文可无载荷。2.3.5connect报文实例📝固定头🏠可变头2.3.5connect报文实例📝有效载荷🏠MQTT连接三元组2.4.1HTTPvsMQTT:一场“重量级”与“轻量级”的较量💪重量级选手HTTP传统Web数据传输协议🎯设计目的一种通用的、无状态的应用层协议,主要用于Web服务和浏览器间的数据传输🗣通信速度慢🔗连接方式短连接(每次请求都需重新握手建立连接)📉消息传递无该机制🦋轻量级选手MQTT物联网(IoT)专用消息协议🎯设计目的为低带宽和不稳定的网络环境设计的轻量级发布/订阅协议,主要用于物联网和移动应用📢通信速度快🔗连接方式长连接(一次握手,保持持久连接状态)🚀消息传递支持离线消息和遗嘱消息2.4.2MQTT的“表弟”——CoAPMQTT协议MessageQueuingTelemetryTransport底层协议:TCP

面向连接,提供可靠的数据传输通信模式:发布/订阅

支持一对多广播,架构灵活高效生态优势:极为成熟

主流物联网云平台均提供完美支持CoAP协议ConstrainedApplicationProtocol底层协议:UDP

无连接,报文轻量,传输速度快通信模式:请求/响应

语义与HTTP相似,简单直观易理解核心定位:受限网络

专为传感器等资源受限设备设计💡学习建议:先集中精力攻克MQTT,它是物联网领域的“事实标准”;CoAP作为补充协议,适合特定的低功耗场景,我们将在进阶课程中深入探讨。测一测——MQTT你掌握了吗?Q1·全称辨析MQTT协议的标准英文全称是什么?请从下列选项中选出正确答案。A.MachineQueuingTelemetryTransport

B.MessageQueuingTelemetryTransport

C.MessageQueryTelemetryTransfer

D.MobileQueueTelemetryTransport💡正确答案:BQ2·发布/订阅模型关于MQTT的发布/订阅核心模型,下列描述最准确的是?A.发布者需知道订阅者IP

B.订阅者直接连发布者

C.双方通过Broker完全解耦

D.一个主题仅能有一个订阅者💡正确答案:CQ3·QoS特性判断判断题:QoS0代表消息具有最高可靠性,无论网络状况如何,都一定会被对端收到。❌错误

QoS0是「至多一次」,不保证消息到达,网络不稳定时可能会丢失。💡核心考点:QoS0无重发机制下一章:物联

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论