一、简介
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议。MQTT协议特点包括轻量、简单、开放和易于实现,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)中已广泛使用。
MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT协议是基于客户端-服务器的消息发布/订阅传输协议。MQTT协议中的消息传输需要依赖一个消息中间件,该中间件负责将消息从发布者传输到订阅者。在MQTT协议中,消息的传输是异步的,即发布者将消息发布到中间件后,不需要等待订阅者的确认即可返回。订阅者则可以从中间件中获取自己感兴趣的消息。
MQTT协议还支持不同的服务质量(QoS)级别,包括至多一次(QoS 0)、至少一次(QoS 1)和确保只有一次(QoS 2)。这些级别可以根据具体的应用场景进行选择,以满足不同的需求。
二、MQTT特点
MQTT协议的特点主要包括以下几个方面:
轻量级与低开销:MQTT协议非常轻量,它的开销很小,适用于低带宽、低功耗设备和网络。其固定长度的头部仅为2字节,协议交换也最小化,以降低网络流量。
发布/订阅模式:MQTT采用发布/订阅模式,提供一对多的消息发布,解除应用程序之间的耦合。客户端可以订阅一个或多个主题(Topic),并且可以在不知道其他客户端的情况下发布消息到主题。这使得消息发布者与订阅者解耦,提高了系统的可扩展性和灵活性。
消息传输的可靠性:MQTT协议提供了三种消息传递服务质量(QoS)等级,即至多一次(QoS 0)、至少一次(QoS 1)和确保只有一次(QoS 2)。这些等级可以根据具体的应用场景进行选择,以满足不同的需求。
对负载内容屏蔽的消息传输:MQTT协议对负载内容进行了屏蔽,使得消息传输更加灵活和高效。
TCP/IP网络连接:MQTT协议使用TCP/IP提供网络连接,保证了消息传输的可靠性和稳定性。尽管主流的MQTT是基于TCP连接进行数据推送的,但也有基于UDP的版本,称为MQTT-SN,适用于不同的网络环境。
遗嘱(Will)机制:MQTT协议支持遗嘱机制,当客户端异常断开连接时,可以通过遗嘱机制通知其他客户端。这有助于及时处理异常情况,提高系统的健壮性。
保留消息(Retained Message):MQTT支持保留消息功能,允许客户端发布一个保留的消息到主题,而后连接到该主题的新订阅者可以立即接收到该消息。这对于传递配置信息或确保新订阅者获取最近的状态更新非常有用。
安全性:MQTT协议支持TLS/SSL加密通信协议,以确保数据的安全传输。这使得MQTT在需要保护敏感信息的应用场景中更具吸引力。
三、MQTT协议格式
固定报头
MQTT控制报文类型
其他说明
可变报头
有效载荷
三、MQTT控制报文示例
CONNECT – 连接服务端
PUBLISH – 发布消息
SUBSCRIBE - 订阅主题
UNSUBSCRIBE –取消订阅
MQTT项目示例
使用朝夕课程MQTT示例程序,使用MQTTnet包:
链接:https://pan.baidu.com/s/1mzY6F8hMv7d1w7hG1Q1-Vg
提取码:xwja