MQTT协议简介
MQTT协议是建立在TCP协议之上的应用层协议,主要面向硬件资源有限、低带宽、高并发、高时延的不可靠网络下的物联网应用。MQTT的传输单位是消息,设备间通过Message Broker来进行消息通知,是典型的发布订阅者模式的应用。每一个设备都可以作为发布者和订阅者,所有消息都在Message Broker中汇集,通过主题进行分类,然后分发给订阅者。
MQTT的三种QoS(Quality of Service)
- QOS0:至多一次。消息发送者会想尽办法发送消息,但是遇到意外不会重试。
- QOS1:至少一次。消息发生者会保证消息接收者至少会收到一次消息,但是可能导致消息重复。
- QOS2:刚好一次。这种语义保证消息接收者只接受到一次消息,但是这样会减少并发、增加时延,适用于消息丢失和消息重复不可接受的场景。
MQTT代理
MQTT设备之间通常不是直接进行通信,而是通过在云服务器中运行一个MQTT代理(如mosquittto),消息订阅者向Message Broker订阅某个主题(Topic)的消息,消息发布者向Message Broker发送某个主题(Topic)的消息,Message Broker收到消息后将消息发送给主题的订阅者,并确保相应的服务质量。
MQTT的安全特性
MQTT提供了多个层次的安全特性,如下所示。
- 网络层安全:通过拉专线或使用VPN来连接MQTT代理,以提高网络传输的安全性。
- 传输层安全:传输层使用TLS加密,防止中间人攻击。客户端证书(X509)作为设备身份凭证来验证设备。
- 应用层安全:提供用户表示(Client Identifier)以及用户名密码,在应用层验证设备。
