MQTTv3.1详解:轻量级发布/订阅消息协议

需积分: 10 7 下载量 99 浏览量 更新于2024-07-17 收藏 1.92MB PDF 举报
"MQTTv3.1中文版-带书签.pdf" MQTT(MQ遥测传输)是一种轻量级的发布/订阅消息传输协议,适用于处理在网络条件较差或者资源有限的环境中,如低带宽、高延迟或资源受限的嵌入式设备。它的设计目标是开放、简单、高效且易于实现。协议的关键特点包括: 1. **发布/订阅模型**:MQTT采用发布/订阅模式,使得消息发布者和接收者之间解耦,一个发布者可以向多个订阅者广播消息。 2. **消息传输透明**:协议本身不关心消息负载的具体内容,只负责消息的传输。 3. **TCP/IP基础**:MQTT建立在TCP/IP协议之上,保证了消息的可靠传输。 4. **服务质量(QoS)**:提供三种QoS等级: - **QoS 0(至多一次)**:消息可能丢失,也可能重复,适合对数据实时性要求高于完整性的场景。 - **QoS 1(至少一次)**:确保消息至少送达一次,可能会有重复,适用于需要确保消息不丢失的情况。 - **QoS 2(只有一次)**:确保消息准确无误地送达一次,适用于关键业务,如计费系统。 5. **小型传输**:协议头部固定为2字节,减少了开销,降低了网络流量。 6. **LastWill和Testament**:当客户端异常断开连接时,通过预先设置的LastWill消息通知其他客户端。 7. **主题通配符**:附录中提供了关于如何使用主题通配符来匹配多个主题的信息,方便管理和订阅。 在MQTT v3.1版本中,相较于v3.0有以下变化: - **用户名和密码**:在"CONNECT"包中可以同时发送用户名和密码。 - **安全增强**:"CONNACK"包引入了新的返回码以应对安全问题。 - **未认证命令处理**:未认证的"PUBLISH"或"SUBSCRIBE"命令不会通知客户端。 - **字符集支持**:MQTT现在支持完整的UTF-8字符集,而非仅限于US-ASCII子集。 在"CONNECT"数据包中的协议号仍然为3,这意味着旧版本的MQTT v3服务器应能接受v3.1客户端的连接,只要它们正确处理"RemainingLength"字段,忽略额外的安全信息。 MQTT的消息格式包括固定报头,对于每个MQTT命令消息,消息头还包含了控制报文类型、剩余长度等信息,确保数据包在服务器和客户端之间的正确传输。具体的数据包格式和每个数据包类型的详细信息在规范中均有详细描述。