news 2026/3/28 23:04:53

23.11.MQTT协议

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
23.11.MQTT协议

1.什么是MQTT协议?

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅(pub/sub)模式的轻量级消息传输协议。它设计时主要考虑到低带宽、高延迟或不可靠网络环境中,特别适用于物联网(IoT)设备间的通信。

特点:

1)轻量级:MQTT的协议头非常小,适合带宽受限或资源有限的环境。

2)实时性:适合需要实时、及时传输数据的应用场景。

3)可靠性:支持三种消息传递质量(QoS)等级,能够保证消息的可靠传递。

4)可扩展性:支持大规模设备的连接,可以灵活地扩展。

5)低功耗:非常适合低功耗设备通信,像智能传感器、智能家居等。

使用场景:

1)物联网(IoT):连接各种传感器、控制设备和云平台。

2)智能家居:设备之间的实时通讯。

3)车联网:车与车、车与路边基础设施之间的通信。

4)工业自动化:设备监控、数据采集等。

2.MQTT协议的架构

MQTT协议采用客户端-服务器架构,服务器被称为Broker,客户端包括发布者(Publisher)和订阅者(Subscriber

主要组件:

Broker(代理服务器):

负责接收、存储和分发消息。

路由消息到订阅者。

维护订阅者和主题之间的关系。

客户端(Client):

发布消息:发送消息到Broker,目标为某个主题(Topic)。

订阅消息:从Broker获取某些主题的消息。

MQTT客户端通常是物联网设备或移动端应用。

消息传递模型:

MQTT使用发布/订阅模式,消息是按照主题(Topic)来组织的。客户端通过订阅某个主题来接收消息,发布者发布消息时,指定消息的主题,Broker根据主题将消息分发给相关的订阅者。

3.MQTT协议的消息格式

MQTT消息非常简单,基本包括以下几部分:

1)固定报头(Fixed Header):包含消息类型(Connect、Publish等)、消息标识符等。

2)可变报头(Variable Header):包含消息的附加信息,比如主题名、QoS等级等。

3)有效载荷(Payload):消息的实际数据部分,通常是文本、JSON、二进制数据等。

4.MQTT的QoS等级

MQTT提供了三种**消息服务质量(QoS)**等级,以确保消息传输的可靠性,分别是:

1QoS 0(至多一次):

消息最多发送一次,不确认,不重发。

适用于不重要或者能容忍丢失消息的场景。

2QoS 1(至少一次):

消息至少发送一次,确保接收者收到消息。可能会重复发送消息。

适合重要但不要求顺序的消息。

3QoS 2(只有一次):

消息只发送一次,且保证消息的顺序和唯一性。

适用于要求高可靠性的场景,但需要更多的网络开销。

5.MQTT的连接流程

MQTT的连接过程包括以下几个步骤:

1)客户端连接Broker

客户端使用CONNECT消息请求连接Broker。

Broker返回CONNACK消息,表示连接是否成功。

2)发布消息:

客户端使用PUBLISH消息向某个主题发布数据。

3)订阅消息:

客户端使用SUBSCRIBE消息订阅一个或多个主题。

4)接收消息:

客户端通过PUBLISH消息接收订阅主题的消息。

5)断开连接:

客户端可以使用DISCONNECT消息与Broker断开连接。

6.MQTT的保留消息(Retained Messages)

保留消息是MQTT的一个特殊功能。当发布者发送一条消息并设置“保留”标志时,Broker会将这条消息保存下来。即使没有当前订阅者,Broker也会在之后有新的订阅者时,将这条消息发送给它。

应用场景:如设备的初始状态,订阅者可以在订阅时收到设备的最新状态。

7.MQTT的遗嘱消息(Last Will and Testament, LWT)

遗嘱消息是MQTT协议中的一个安全特性。当客户端意外断开时,Broker会根据客户端设置的“遗嘱消息”来发布一条消息给订阅者。这个消息通常用于告知其他客户端某个设备已经断开。

设置方法:在连接时,客户端可以通过LWT字段提供遗嘱消息。

8.MQTT协议的安全性

MQTT本身并没有内建加密和身份验证机制,但它可以与其他技术结合使用来增强安全性:

1TLS/SSL加密:确保数据在传输过程中是加密的,防止被窃听。

2)认证:可以使用用户名和密码来验证客户端身份。

3)授权:可以通过ACL(访问控制列表)限制哪些客户端可以订阅或发布某些主题。

9.MQTT的优势与劣势

9.1.优势

1)低带宽消耗:由于消息头小,数据传输更加高效,适合网络条件差的场景。

2)低延迟:实时性高,支持快速的消息传输。

3)可靠性:提供不同的QoS等级来保证消息的可靠传递。

4)灵活性和扩展性:支持成千上万的客户端设备,可以适应大规模的分布式网络。

9.2.劣势

1)不适合大量数据传输:由于MQTT是设计为轻量协议,它不适合频繁的大数据量传输。

2)较弱的安全性:虽然可以通过加密和认证提升安全性,但默认的协议安全性较低。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/16 11:32:11

5个技巧让Python异步编程性能翻倍

5个技巧让Python异步编程性能翻倍 【免费下载链接】uvloop Ultra fast asyncio event loop. 项目地址: https://gitcode.com/gh_mirrors/uv/uvloop 在现代Python开发中,异步编程已经成为处理高并发场景的核心技术。对于技术新手和普通开发者来说,…

作者头像 李华
网站建设 2026/3/11 4:18:46

aday39打卡

浙大疏锦行

作者头像 李华
网站建设 2026/3/25 5:45:14

终极简单作品集模板:快速打造专业个人网站

终极简单作品集模板:快速打造专业个人网站 【免费下载链接】simplefolio ⚡️ A minimal portfolio template for Developers 项目地址: https://gitcode.com/gh_mirrors/si/simplefolio Simplefolio是一款专为开发者设计的极简主义个人作品集模板&#xff0…

作者头像 李华
网站建设 2026/3/24 19:34:16

Langchain-Chatchat + 大模型 高效私有知识库解决方案

Langchain-Chatchat 大模型:构建高效私有知识库的实践路径 在企业数字化转型不断深化的今天,一个现实问题日益凸显——大量关键知识散落在PDF、Word文档和内部报告中,员工查找一条政策或技术规范往往要翻遍多个文件夹。某科技公司曾统计&…

作者头像 李华
网站建设 2026/3/13 4:04:01

Ring-flash-linear-2.0:6.1B参数实现40B性能,大模型效率革命再突破

导语:近日,inclusionAI团队正式开源Ring-flash-linear-2.0模型,该模型凭借创新的混合架构与稀疏激活技术,仅需6.1B激活参数即可达到传统40B密集型模型的性能水平,为大语言模型的效率优化树立新标杆。 【免费下载链接】…

作者头像 李华
网站建设 2026/3/24 19:22:43

Apache PDFBox 完全指南:Java PDF处理从入门到精通

Apache PDFBox 完全指南:Java PDF处理从入门到精通 【免费下载链接】pdfbox Apache PDFBox: 是一个用于处理PDF文档的开源Java库。它允许开发者读取、写入、操作和打印PDF文档。适合Java开发者,特别是那些需要处理PDF文档的业务应用开发者。特点包括支持…

作者头像 李华