一、构成
由固定报头+可变报头组成;
固定报头:报文类型(CONNECT)+剩余长度(可变报头+有效载荷)
可变报头:协议名(Protocol name)+协议级别(Protocol level)+连接标志(Connect flags)+保持连接(keep alive)
二、分类讲解
1、协议名:MQTT
2、协议级别:就是协议版本,对于V3.1.1的话值为4
3、连接标志:包括清理会话、遗嘱标志、遗嘱QOS、遗嘱保留、用户名标志、密码标志。
4、保持连接:是保持连接的时间,以秒为单位。
三、对连接标志里的各项和保持连接进行讲解:
1、遗嘱标志:遗嘱标志(Will Flag) 被设置为1,表示如果连接请求被接受了,遗嘱(Will Message) 消息
必须被存储在服务端并且与这个网络连接关联。之后网络连接关闭时,服务端必须发布这个
遗嘱消息,除非服务端收到DISCONNECT报文时删除了这个遗嘱消息 。
2、遗嘱QOS:这两位用于指定发布遗嘱消息时使用的服务质量等级。
3、遗嘱保留:如果遗嘱消息被发布时需要保留,需要指定这一位的值。
如果遗嘱保留被设置为1,服务端必须将遗嘱消息当作保留消息发布 。
4、保持连接:保持连接(Keep Alive) 是一个以秒为单位的时间间隔,表示为一个16位的字,它是指在客户端传输完成一个控制报文的时刻到发送下一个报文的时刻,两者之间允许空闲的最大时间间隔 。如果保持连接的值非零,并且服务端在一点五倍的保持连接时间内没有收到客户端的控制报文,它必须断开客户端的网络连接,认为网络连接已断开 。
四、示例