Mqtt入门之消息组成

消息组成

Mqtt协议的消息由三部分组成:

  1. 固定头部;
  2. 可变头部;
  3. 消息体;

Netty中MqttMessage实现如下图所示:
Mqtt入门之消息组成_第1张图片

固定头部

  固定头部的长度固定为2Byte,第一个Byte指定了消息类型,第二个Byte指定了消息长度,如下图所示:
Mqtt入门之消息组成_第2张图片
第一个Byte的7-4位指定了消息类型,3-0为消息类型的标记位,相当于扩展位,消息类型如下图所示:

标记位如下图所示:

剩余长度:当前报文剩余部分的字节数,包括可变报头和消息体。
Netty中MqttFixedHeader实现如下图所示:
Mqtt入门之消息组成_第3张图片

可变头部

  1. 有些消息类型包含可变头部,有些则不包含;
  2. 可变头部的内容根据消息类型的不同而不同;
  3. 如果消息中存在可变头部,则需要有2Byte的报文标识符Packet Identifier,即消息ID;
    Mqtt入门之消息组成_第4张图片

你可能感兴趣的:(Mqtt协议)