MQTT控制报文的结构
- MQTT的报文结构:固定报头 + 可变报头 + 有效载荷
- 固定报头:所有报头都包含的有固定格式的部分;
- 可变报头:不一定存在,看具体报文类型;
- 有效载荷:传输的内容,可以没有。
固定报头格式 Fixed header
-
关于上图的固定报头中MQTT控制报文的类型
-
关于固定报头中的标志位
一般指定的报文类型会有对应的标志位,按照对应的填写即可。 -
关于固定报头中的剩余长度(Remaining Length)
表示当前报文剩余部分的字节数,包括可变报头和载荷的数据。剩余长度不包括固定报头部分。采用变长编码方案:每一个字节的低七位表示长度数据,第八位为0表示编码到此字节结束,为1表示下一字节也是剩余长度内容;最长四字节,最大编码方式。
可变报头
具体的根据控制报文类型不同而不同,之后会介绍。
有效载荷
可选。根据控制报文类型确定。
MQTT控制报文 MQTT Control Packets
Connect - 连接服务端
- 客户端和服务端网络连接建立后,客户端给服务端发的第一个报文必须是connect报文。
- 服务端会把客户端发的第二个connect报文当做协议违规处理并断开客户端连接。
- 有效载荷包含一个或多个编码的字段。包括客户端的唯一标识符,Will主题,Will消息,用户名和密码。除了客户端标识之外,其它的字段都是可选的,基于可变报头中的连接标志来决定可变报头中是否需要包含这些字段。 <