Mqtt入门之消息组成
消息组成
Mqtt协议的消息由三部分组成:
- 固定头部;
- 可变头部;
- 消息体;
Netty中MqttMessage实现如下图所示:
固定头部
固定头部的长度固定为2Byte,第一个Byte指定了消息类型,第二个Byte指定了消息长度,如下图所示:
第一个Byte的7-4位指定了消息类型,3-0为消息类型的标记位,相当于扩展位,消息类型如下图所示:
标记位如下图所示:
剩余长度:当前报文剩余部分的字节数,包括可变报头和消息体。
Netty中MqttFixedHeader实现如下图所示:
可变头部
- 有些消息类型包含可变头部,有些则不包含;
- 可变头部的内容根据消息类型的不同而不同;
- 如果消息中存在可变头部,则需要有2Byte的报文标识符Packet Identifier,即消息ID;