欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > MQTT协议

MQTT协议

2025/2/25 8:26:42 来源:https://blog.csdn.net/weixin_41896152/article/details/144584346  浏览:    关键词:MQTT协议

因为面试被问到最擅长的一门课,说的是物联网,但是提到MQTT协议被问的哑口无言。先通过chatgpt回忆一下…

什么是MQTT协议,底层是什么网络协议?

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅(Publish/Subscribe) 模式的轻量级消息传输协议。它专为低带宽、不可靠网络环境设计,常用于物联网(IoT)设备之间的通信。

底层协议:MQTT基于TCP/IP协议运行,确保数据的可靠传输。它使用TCP连接作为传输层协议,同时可以通过TLS加密增强安全性。

工作原理:

  • 发布者向某个主题(Topic)发送消息。
  • 订阅者订阅某个主题,接收与该主题相关的消息。
  • **消息中间件(Broker)**负责接收和转发消息,管理发布者和订阅者之间的通信。

和别的协议相比,为什么物联网中使用MQTT协议?优缺点是什么?

MQTT 在物联网中流行的原因主要与其针对资源受限设备和网络环境优化的特性有关。

优点:

轻量化设计:

消息头部开销极小(2字节),适合带宽有限的网络环境。
消息体可根据需要设计为极简格式,降低数据传输成本。

低功耗:

适合电池供电设备。支持长时间保持连接(Keep-Alive)和休眠,降低通信频率。
支持不可靠网络:

通过 QoS(Quality of Service,服务质量)机制提供可靠性保障,有三种级别:

QoS 0:最多传输一次(不保证交付)。
QoS 1:至少传输一次(可能重复)。
QoS 2:确保仅传输一次(防止重复交付)。

异步通信:

发布/订阅模式解耦了消息的发送者和接收者,便于设备间的松耦合。

跨平台和扩展性:

提供多种客户端库,支持多种编程语言和操作系统。

支持持久会话:

客户端掉线后,Broker可以保留其订阅信息和未收到的消息。

缺点:

依赖 TCP/IP:

在仅支持UDP的网络环境下(如某些移动网络),需要额外适配。

安全性依赖外部机制:

原生协议不直接提供加密功能,需结合TLS或VPN实现加密。

消息丢失风险:

QoS 0模式下可能丢失消息,而 QoS 2 增加了协议复杂度。

缺乏细粒度的访问控制:

需要通过额外的 Broker 功能或插件实现复杂的权限管理。

总结

物联网中使用 MQTT 是因为它专为资源受限设备设计,适用于低带宽、不可靠网络场景。然而,根据具体应用场景,可能需要结合其他协议(如 CoAP、HTTP)来实现特定功能。

特性MQTTHTTPCoAPAMQP
传输层协议TCPTCPUDPTCP
通信模式发布/订阅请求/响应请求/响应发布/订阅、请求/响应
资源占用极低中等
适合场景低带宽、低功耗设备高可靠性、一次性任务超低功耗和实时性需求高可靠性企业应用
可靠性QoS 机制保障依赖 HTTP 协议无 QoS,依赖 UDP强事务和可靠性支持
安全性通过 TLS 实现加密原生支持 TLS需要 DTLS原生支持 TLS

MQTT 和 CoAP 的区别

1. 协议层级与架构

特性MQTTCoAP
协议类型应用层协议应用层协议
架构基于发布/订阅模型基于请求/响应模型(类似 HTTP)
传输层协议TCPUDP
通信模式异步(发布/订阅)同步(请求/响应)和异步(观察者)

2. 适用场景

特性MQTTCoAP
适用场景高可靠、带宽受限、需要消息持久化低功耗、轻量级、实时性需求高
连接特性长连接(保持 TCP 会话)短连接(无状态,单次请求完成后断开)
目标设备能持续保持连接的设备(如智能家居)极低功耗设备(如传感器网络)

3. 消息传输与可靠性

特性MQTTCoAP
可靠性支持 QoS(最多一次、至少一次、仅一次)无内置 QoS,依赖 UDP 重传机制
消息中间件需要 Broker(消息代理)无需中间件,点对点通信
传输效率高,但依赖 TCP(较重)极高,因使用 UDP(较轻)

4. 数据格式与大小

特性MQTTCoAP
消息格式自定义数据格式支持 JSON、CBOR 等多种格式
开销较低(2 字节头部)更低(基于二进制编码,最小头部 4 字节)
数据大小无限制(取决于 Broker 和网络)通常限制在 1-2 KB(受 UDP 影响)

5. 安全性

特性MQTTCoAP
加密通过 TLS 加密通过 DTLS(基于 UDP 的 TLS)加密
认证支持用户名/密码或证书支持基于 DTLS 的身份认证

6. 功能支持

特性MQTTCoAP
持久会话支持(可保留订阅信息和未接收消息)不支持(无状态通信)
资源模型无,主题是纯文本路径类似 REST 的资源模型
扩展性高,支持复杂的 Broker 配置较低,设计为简单高效

7. 优势与劣势

MQTT 优势
  1. 可靠性高,支持 QoS 保证消息传输。
  2. 发布/订阅模式解耦了发送者与接收者。
  3. 持久会话,掉线后消息可重新发送。
  4. 广泛支持的客户端和 Broker 实现。
MQTT 劣势
  1. 依赖 TCP,网络开销较大。
  2. Broker 是必要组件,增加系统复杂度。
CoAP 优势
  1. 基于 UDP,开销小,适合低功耗设备。
  2. 类似 REST 的资源模型,支持点对点通信。
  3. 支持组播功能,适合多设备场景。
CoAP 劣势
  1. 无 QoS 机制,消息可靠性较低。
  2. 缺乏持久连接和消息存储功能。

8. 选择建议

  • 使用 MQTT 的场景

    • 需要高可靠性和消息持久化的应用。
    • 设备间需要松耦合通信(如智能家居、工业自动化)。
    • 网络带宽较充裕且能维持长连接的场景。
  • 使用 CoAP 的场景

    • 对低功耗、轻量化需求强烈的场景(如传感器网络)。
    • 需要短连接、高实时性的应用。
    • 无法使用 TCP,必须依赖 UDP 的环境。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词