文章目录
1. MQTT 简介
MQTT(消息队列遥测传输)是一个基于客户端-服务器的消息发布/订阅传输协议。
MQTT中文手册
2. CONNECT 报文结构
建立客户端(client)到服务端(Server)的网络连接后,客户端发送给服务端的第一个报文必须是 CONNECT 报文(连接到服务端)。
并且在一次连接中,只能发送一次 CONNECT 报文,服务端会将客服端发送的第二个CONNECT报文当做协议违规处理并断开连接。
CONNECT报文结构为:固定报头+可变报头+有效载荷。
2.1 固定报头
固定报头的结构(2字节)
剩余长度等于可变报头的长度(10字节)加上有效载荷的长度。(固定报头后面所有内容的长度)。
CONNECT 报文固定报头可表示为:10 ??(问号中填入剩余长度)。
剩余长度详解
剩余长度字段使用一个变长度编码方案,对小于128的值它使用单字节编码。若剩余长度大于等于128字节,则使用双字节低端编码的方式(低八位 - 高八位),最多使用 4 个字节来表示长度:
其中,每个字节的低七位用于编码数据,第八位延续位用于指示是否有更多的字节。因此每个字节可以编码127个数值(0111 1111)和一个延续位。
例:
- 小于128字节时:
剩余长度98个字节(0110 0010)转换成