既然MQTT是一个通信协议,就有必要看看在通信时的packet报文信息,有助于对协议自身的理解。
MQTT是一个二进制协议,所以报文中的数据都是字节码而不是文字。
而且它采用 command 和 command acknowledgement 成对实现通信。
[b](1)报文分析[/b]
[b]标准的MQTT报文结构[/b]
主要分为三部分:固定报头(Fixed Header)、可变报头(Variable Header)、有效载荷(Payload)
其中固定报头为2个字节,一定会存在,其他部分可以没有。
[img]http://dl2.iteye.com/upload/attachment/0128/3749/b9b64eb7-5bf8-3d21-9c1a-e196be47e236.png[/img]
[b]最小报文[/b]
包含两个字段:控制头部、报头长度
[img]http://dl2.iteye.com/upload/attachment/0128/3751/985b2bbb-da01-3179-8eca-efe37e3f7f80.png[/img]
[b]控制头部[/b]
包含两个字段:消息类型、标志位
[img]http://dl2.iteye.com/upload/attachment/0128/3755/bb2dfe40-2dc0-3b81-bdcc-542208ec0ece.png[/img]
[b]可变报头[/b]
包含四个字段:协议名、协议级别、连接标志、保持连接
[img]http://dl2.iteye.com/upload/attachment/0128/3755/bb2dfe40-2dc0-3b81-bdcc-542208ec0ece.png[/img]
[b]连接标志[/b]
包含以下八个字段:
第0位:保留标志位
第1位:清理会话标志
第2位:遗嘱标志
第3,4位:QoS标志
第5位:遗嘱保留Retain标志
第6位:密码
第7位:用户名
[img]h
MQTT是一个二进制协议,所以报文中的数据都是字节码而不是文字。
而且它采用 command 和 command acknowledgement 成对实现通信。
[b](1)报文分析[/b]
[b]标准的MQTT报文结构[/b]
主要分为三部分:固定报头(Fixed Header)、可变报头(Variable Header)、有效载荷(Payload)
其中固定报头为2个字节,一定会存在,其他部分可以没有。
[img]http://dl2.iteye.com/upload/attachment/0128/3749/b9b64eb7-5bf8-3d21-9c1a-e196be47e236.png[/img]
[b]最小报文[/b]
包含两个字段:控制头部、报头长度
[img]http://dl2.iteye.com/upload/attachment/0128/3751/985b2bbb-da01-3179-8eca-efe37e3f7f80.png[/img]
[b]控制头部[/b]
包含两个字段:消息类型、标志位
[img]http://dl2.iteye.com/upload/attachment/0128/3755/bb2dfe40-2dc0-3b81-bdcc-542208ec0ece.png[/img]
[b]可变报头[/b]
包含四个字段:协议名、协议级别、连接标志、保持连接
[img]http://dl2.iteye.com/upload/attachment/0128/3755/bb2dfe40-2dc0-3b81-bdcc-542208ec0ece.png[/img]
[b]连接标志[/b]
包含以下八个字段:
第0位:保留标志位
第1位:清理会话标志
第2位:遗嘱标志
第3,4位:QoS标志
第5位:遗嘱保留Retain标志
第6位:密码
第7位:用户名
[img]h