**目录**
1 介绍
1.1 MQTT结构
1.2 术语
1.3 标准引用
1.4 非标准引用
1.5 数据表示
1.5.1 位
1.5.2 整数数据值
1.5.3 UTF-8编码的字符串
1.6 编辑约定
2 MQTT控制包格式
2.1 MQTT控制包的结构
2.2 固定头部
2.2.1 MQTT控制包类型
2.2.2 标志
2.2.3 剩余字长
2.3 可变头部
2.3.1 包标识符
2.4负载
3 MQTT控制包
3.1 CONNECT—客户端请求到服务器的连接
3.1.1 固定头部
3.1.2 可变头部
3.1.3 有效负载
3.1.4 响应
3.2 CONNACK—确认连接请求
3.2.1 固定头部
3.2.2 可变头部
3.2.3 有效负载
3.3 PUBLISH—发布消息
3.3.1 固定头部
3.3.2 可变头部
3.3.3 有效负载
3.3.4 响应
3.3.5 行为
3.4 PUBACK-发布确认
3.4.1 固定头部
3.4.2 可变头部
3.4.3 有效负载
3.4.4 行为
3.5 PUBREC-获得发布(获得QoS2发布,第1部分)
3.5.1 固定头部
3.5.2 可变头部
3.5.3 有效负载
3.5.4 行为
3.6 PUBREL-发布释放(获得QoS2发布,第2部分)
3.6.1 固定头部
3.6.2 可变头部
3.6.3 有效负载
3.6.4 行为
3.7 PUBCOMP-发布完成(获得QoS2发布,第3部分)
3.7.1 固定头部
3.7.2 可变头部
3.7.3 有效负载
3.7.4 行为
3.8 SUBSCRIBE-订阅主题
3.8.1 固定头部
3.8.2 可变头部
3.8.3 有效负载
3.8.4 响应
3.9 SUBACK-订阅确认
3.9.1 固定头部
3.9.2 可变头部
3.9.3 有效负载
3.10 UNSUBSCRIBE-取消订阅的主题
3.10.1 固定头部
3.10.2 可变头部
3.10.3 有效负载
3.10.4 响应
3.11 UNSUBACK—退订确认
3.11.1 固定头部
3.11.2 可变头部
3.11.3 有效负载
3.12 PINGREQ-PING请求
3.12.1 固定头部
3.12.2 可变头部
3.12.3 有效负载
3.12.4 响应
3.13 PINGRESP-PING响应
3.13.1 固定头部
3.13.2 可变头部
3.13.3 有效负载
3.14 DISCONNECT-断开通知
3.14.1 固定头部
3.14.2 可变头部
3.14.3 有效负载
3.14.4 响应
4 操作行为
4.1 存储状态
4.4.1 非标准的例子
4.2 网络连接
4.3 服务水平质量(QoS)和协议流
4.3.1 QoS 0: 最多一次交付
4.3.2 QoS 1: 至少一次交付
4.3.3 QoS 2: 精准一次交付
4.4 消息交付重试
4.5 消息收据
4.6 消息订单
4.7 主题名称和主题过滤器
4.7.1 主题通配符
4.7.2 从$开始的主题
4.7.3 主题语义和用法
4.8 处理错误
5 安全
5.1 介绍
5.2 MQTT解决方案:安全性和认证
5.3 轻量级加密和受限的设备
5.4 实现注意事项
5.4.1 服务器对客户端的身份认证
5.4.2 服务器对客户端的授权
5.4.3 客户端对服务器的身份认证
5.4.4 应用程序消息和控制数据包的完整性
5.4.5 应用程序消息和控制数据包的隐秘性
5.4.6 不可抵赖性的消息传输
5.4.7 客户端和服务器违反安全规则的检测
5.4.8 异常行为的检测
5.4.9 其他安全注意事项
5.4.10 使用SOCKS
5.4.11 安全性配置文件
6 使用WebSocket作为网络传输
6.1 IANA注意事项
7 一致性
7.1 一致性的目标
7.1.1 MQTT服务器
7.1.2 MQTT客户端
附录A 确认(非规范性)
附录B 强制性的规范的语句(非规范性)
附录C 修订历史(非规范性)