MQTT协议 10分钟快速了解

259 阅读2分钟

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

介绍

MQTT全称为/Message Queuing Telemetry Transport(消息队列遥测传输),是一种基于 发布/订阅 模式的 轻量级物联网消息传输协议。广泛应用于车联网、智能家居、物流、即时聊天应用和移动消息推送等领域。MQTT协议为这些设备提供了稳定、可靠的通信基础。

发展历史

MQTT最初由IBM1999发明。最初的用途是将石油管道上的传感器与卫星相链接,所以从诞生之初就是专为受限设备和低带宽、高延迟或不可靠的网络设计,使用了发布/订阅模型,在空间和时间上解耦了消息的发送者和接受者,并基于TCP/IP提供稳定可靠的网络连接,拥有非常轻量的报头以减少传输开销,支持可靠消息传输,可以说天生就是为了满足物联网场景的各种需求。

在接下来的十年里,IBM 一直在内部使用该协议,直到 2010 年他们发布了 MQTT 3.1 作为免版税版本。

20193 月,OASIS 批准了新的 MQTT 5 规范

基本特点

  • 轻巧高效MQTT客户端非常小,需要设备资源少。MQTT消息头很小,可以优化网络带宽。
  • 双向通信MQTT允许设备到云之间以及云到设备之间的消息传递。
  • 可靠的消息传递MQTT具有3种服务质量级别:0-最多一次,1-至少一次,2-恰好一次,可根据业务场景保证消息传递的可靠性
  • 支持不可靠网络:许多物联网设备的网络都不一定可靠。MQTT对持久性会话的支持减少了客户端与代理重新连接的时间。
  • 安全:轻松使用TLS加密消息并使用身份验证协议(例如OAuth)对客户端进行身份验证

协议原理

MQTT协议中主要有三种角色:发布者(Publisher)、代理(Broker)、订阅者(Subscriber)。发布者向代理发布消息,代理向订阅者转发这些消息。通常情况下,客户端的角色是发布者和订阅者,服务器的角色是代理,但实际上,服务器也可能主动发布消息或者订阅主题,客串一下客户端的角色。

MQTT消息主要包括:主题(Topic)、和载荷(Payload)两部分:

  • Topic:订阅者向代理订阅主题后,一旦代理收到相应主题的消息,就会向订阅者转发该消息
  • Payload:订阅者在消息中真正关系的部分,通常是业务相关的。