轨交综合监控数采接口技术研究(6)

PINGRESP13服务器到客户端PING应答 DISCONNECT14客户端到服务器中断连接 Reserved15不可用保留位 4.3.3标识位 位置:byte 1, bits 3-0。 在不使用标识位的消息类型中,


PINGRESP 13 服务器到客户端 PING应答

DISCONNECT 14 客户端到服务器 中断连接

Reserved 15 不可用 保留位

4.3.3 标识位

位置:byte 1, bits 3-0。

在不使用标识位的消息类型中,标识位被做为保留位。若收到无效的标志,接收端必须关闭网络连接:

DUP:发布消息的副本。用来在保证消息的可靠传输,如果设置为 1,则在下面的变长中增加MessageId,并且需要回复确认,以保证消息传输完成,但不能用于检测消息重复发送。

表4.2.4 MQT标识位

数据包 标识位 Bit 3 Bit 2 Bit 1 Bit 0

CONNECT 保留位 0 0 0 0

CONNACK 保留位 0 0 0 0

PUBLISH MQTT 3.1.1使用 DUP1 QoS2 QoS2 RETAIN3

PUBACK 保留位 0 0 0 0

PUBREC 保留位 0 0 0 0

PUBREL 保留位 0 0 0 0

PUBCOMP 保留位 0 0 0 0

SUBSCRIBE 保留位 0 0 0 0

SUBACK 保留位 0 0 0 0

UNSUBSCRIBE 保留位 0 0 0 0

UNSUBACK 保留位 0 0 0 0

PINGREQ 保留位 0 0 0 0

PINGRESP 保留位 0 0 0 0

DISCONNECT 保留位 0 0 0 0

QoS:发布消息的服务质量,即:保证消息传递的次数。

表4.2.5服务质量次数表

服务质量 次数

00 最多一次(<=1)

01 至少一次(>=1)

10 一次(=1)

RETAIN: 发布保留标识,服务器要保留这次推送的信息,如果有NEW订阅者出现,就把这消息推送于他。若没有,就推送到当前的订阅者后释放。

4.3.4 剩余长度(Remaining Length)

位置:byte 1。

MQTT固定头的第二字节作用:保存变长头部和消息体的总大小。但并非直接保存。这一字节是可以扩展,其保存机制,前七位用于保存长度,后面的一部用做于标识。当最后一位为 1时,表示说其长度不足,需要使用两个字节继续保存。

4.3.5 MQTT可变头

MQTT数据包中包含可变头,其位于固定的头和负载之间。MQTT中有1可变头。且其内容因数据包类型而不同,较常的是做为包的标识:

表4.2.6 MQTT可变头结构

Bit 7 6 5 4 3 2 1 0

byte 1 包标签符(MSB)

byte 2… 包标签符(LSB)

很多类型数据包中都包括一个两字节的数据包标识字段,这些类型的包有:PUBLISH (QoS > 0)、PUBACK、SUBACK、UNSUBSCRIBE,PUBCOMP、SUBSCRIBE、PUBREC、PUBREL、 UNSUBACK。