MENU

MQTT协议(九)——固定报文头

2018 年 02 月 03 日 • MQTT协议

MQTT协议的固定报文头由两个部分组成,第一部分是报文的控制类型与标识,占据1个字节;第二部分是报文的剩余长度,占据1~4个字节。

一、控制报文类型与标识

控制标识共占一个字节,位于MQTT报文的第1个字节。其中高4位是控制报文类型,低4位是控制标识,如下。
QQ截图20180202114738.png

控制报文类型共有表格中这些取值。

QQ截图20180202114738.png

控制标识共有下面表格中这些取值。

QQ截图20180202114738.png

二、 报文的剩余长度

报文的剩余长度用来表示剩下的报文占据字节大小,不含控制报文类型和标识报文剩余长度本身。它的长度是可变的,范围是1~4个字节,采用大端序,其中前一个字节的最高位(第8位)置位用来表示是否还有剩余的字节,0表示没有剩余字节。

    比如:
        报文剩余长度为0x7F,二进制为0111 1111b,最高位为0表示报文剩余长度到此为止了。
        报文剩余长度为0x80, 0x0,二进制位1000 0000b, 0000 0000b,最高位为1表示后面还有用来表示剩余长度的字节。而后面的字节为0000 0000b,最高位为0说明后面没有用来表示剩余长度的字节。
    所以,报文剩余长度最大值为0xFF 0xFF 0xFF 0x7F,即268,435,455。