-
Notifications
You must be signed in to change notification settings - Fork 20
信息格式
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 | 保留长度 |
包含信息类型和标记(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 | 保留 |