Skip to content
auciferjay edited this page Nov 22, 2012 · 4 revisions

每条MQTT指令信息都必须包含一个固定的信息头。部分信息也要求一个可变信息头和一个负载信息,信息头的每个部分都会在下表中描述出来

bit 7 6 5 4 3 2 1 0
byte 1 信息类型 DUP标记 Qos级别 保留
byte 2 保留长度
字节1
包含信息类型和标记(DUP,Qos级别,和RETAIN)
字迹2
(至少一个字节)包含保留长度
所有域都会在下面的部分详细介绍。所有的数据值都是遵循大端法:高位字节向低位字迹,一个16比特单词被描述为一个最高有效位在前最低幼小位在后的结构。

信息类型
位置,字节1,比特位7-4
作为一个4位不符号数据,以下为当前版本的协议常量

Mnemonic 常量 描述
Mnemonic 常量 描述
Reserved 0 保留
CONNECT 1 客户端请求连接
CONNACK 2 请求连接被承认
PUBLISH 3 客户端请求发布信息
PUBACK 4 请求发布信息被承认
PUBREC 5 请求发布信息被接收(确认提交第一部分)
PUBREL 6 请求发布信息被释放(确认提交第二部分)
PUBCOMP 7 请求发布信息被完成(确认提交第三部分)
SUBSCRIBE 8 客户端请求订阅
SUBACK 9 订阅请求被承认
UNSUBSCRIBE 10 客户端请求取消订阅
UNSUBACK 11 取消订阅请求被承认
PINGREQ 12 PING 请求
PINGRESP 13 PING 回复
DISCONNECT 14 客户端请求断开连接
Resvered 15 保留

DUP
位置:字节位1,比特位3
这个标记会在客户端或服务器尝试重新提交PUBLISH,PUBREL,SUBSCRIBE或UNSUBSCRIBE信息是被设置。这适用于信息的Qos值大于0,并且必须获得回复。当DUP值被设定时,可变信息头包含一条信息id。

接受者应该把这个信息当做一个提示,判断信息是否可能已经接收过。它不应该依赖于检测副本。

QoS
位置:字节位1,比特位2-1
这一标记位表明PUBLISH信息被确认交付的等级,所有的QoS等级会显示在下表中

QoS值 比特位2 比特位1 描述
0 0 0 至多一次   <=1
1 0 1 至少一次 确保信息到达 >=1
2 1 0 只有一次 确保信息到达一次 =1
3 1 1 保留
Clone this wiki locally