这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战
介绍
MQTT全称为/Message Queuing Telemetry Transport(消息队列遥测传输),是一种基于 发布/订阅 模式的 轻量级物联网消息传输协议。广泛应用于车联网、智能家居、物流、即时聊天应用和移动消息推送等领域。MQTT协议为这些设备提供了稳定、可靠的通信基础。
发展历史
MQTT最初由IBM于1999发明。最初的用途是将石油管道上的传感器与卫星相链接,所以从诞生之初就是专为受限设备和低带宽、高延迟或不可靠的网络设计,使用了发布/订阅模型,在空间和时间上解耦了消息的发送者和接受者,并基于TCP/IP提供稳定可靠的网络连接,拥有非常轻量的报头以减少传输开销,支持可靠消息传输,可以说天生就是为了满足物联网场景的各种需求。
在接下来的十年里,IBM 一直在内部使用该协议,直到 2010 年他们发布了 MQTT 3.1 作为免版税版本。
2019 年 3 月,OASIS 批准了新的 MQTT 5 规范
基本特点
- 轻巧高效:
MQTT客户端非常小,需要设备资源少。MQTT消息头很小,可以优化网络带宽。 - 双向通信:
MQTT允许设备到云之间以及云到设备之间的消息传递。 - 可靠的消息传递:
MQTT具有3种服务质量级别:0-最多一次,1-至少一次,2-恰好一次,可根据业务场景保证消息传递的可靠性 - 支持不可靠网络:许多物联网设备的网络都不一定可靠。
MQTT对持久性会话的支持减少了客户端与代理重新连接的时间。 - 安全:轻松使用
TLS加密消息并使用身份验证协议(例如OAuth)对客户端进行身份验证
协议原理
MQTT协议中主要有三种角色:发布者(Publisher)、代理(Broker)、订阅者(Subscriber)。发布者向代理发布消息,代理向订阅者转发这些消息。通常情况下,客户端的角色是发布者和订阅者,服务器的角色是代理,但实际上,服务器也可能主动发布消息或者订阅主题,客串一下客户端的角色。
MQTT消息主要包括:主题(Topic)、和载荷(Payload)两部分:
Topic:订阅者向代理订阅主题后,一旦代理收到相应主题的消息,就会向订阅者转发该消息Payload:订阅者在消息中真正关系的部分,通常是业务相关的。