可变头(Variable Header) 可变头具体含义取决于包类型,但在MQTT 5.0协议中,大部分包类型都含有两部分,包序号(Packet Identifier)和特性(Properties)。 包序号(Packet Identifier) 包序号为双字节数,使用了包序号的包类型有。 包序号的使用有如下规则: 如果QoS为0的PUBLISH包不允许包含包序号 每当客户端发送一个新的...
Message Identifier(MsgID):用于关联订阅请求和服务器的确认响应。 Suback、Unsuback报文: Message Identifier(MsgID):与对应的Subscribe或Unsubscribe请求中的MsgID相同,用于关联响应。 Puback、Pubrec、Pubrel、Pubcomp报文(QoS 1和2的确认报文): Message Identifier(MsgID):与对应PUBLISH报文中的MsgID相同,用于关联确认过程。
Packet Identifier 也可以叫做 Message Identifier,以后在文章中出现的 报文标识符,都以 Packet Identifier 指代。 报文标识符用来区分报文,特别是在重发的报文中用来标识是否是同一个报文,并在需要应答的场景中用于确定是对哪个发送报文的应答。可变报头的报文标识符(Pack...
client 会向 broker 发送 SUBSCRIBE 消息来接收有关感兴趣的 topic,这个 SUBSCRIBE 消息非常简单,它包含了一个唯一的数据包标识和一个订阅列表。 Packet Identifier:这个 PacketId 和上面的 PacketId 一样,都表示消息的唯一标识符。 List of Subscriptions:一个 SUBSCRIBE 消息可以包含一个客户端的多个订阅。每个订阅...
报文标识符(Packet Identifier):SUBACK 报文中的报文标识符必须与对应的 SUBSCRIBE 报文一致,以便另一方正确地将响应与请求匹配。 属性(Properties):下表列出了 SUBACK 报文的所有可用属性。 有效载荷 SUBACK 报文的有效载荷包含了一个 Reason Code 列表,Reason Code 指示了订阅是否成功或者失败的原因。一个 Reason ...
1.Sender发送QoS为2的PUBLISH数据包,数据包 Packet Identifier 为 P,并在本地保存该PUBLISH包; 2.Receiver收到PUBLISH数据包后,在本地保存PUBLISH包的Packet Identifier P,并回复Sender一个PUBREC数据包,PUBREC数据包可变头中的Packet Identifier为P,没有消息体(Payload); ...
报文标识符(Packet Identifier):与 PUBLISH 报文不同,PUBACK 报文中的报文标识符必须存在,它用于向对端指示这是对哪一个 QoS 为 1 的 PUBLISH 报文的响应。 原因码(Reason Code):这是一个单字节的无符号整数,用于向 PUBLISH 报文的发布端指示发布结果,比如是否因为未授权而被拒绝发布。下表列出了PUBACK 报文所有...
报文标识符(Packet Identifier):与 PUBLISH 报文不同,PUBACK 报文中的报文标识符必须存在,它用于向对端指示这是对哪一个 QoS 为 1 的 PUBLISH 报文的响应。 原因码(Reason Code):这是一个单字节的无符号整数,用于向 PUBLISH 报文的发布端指示发布结果,比如是否因为未授权而被拒绝发布。下表列出了PUBACK 报文所有...
报文标识符 Packet Identifier:只有当QoS等级是1或2时,报文标识符(Packet Identifier)字段才能出现在PUBLISH报文中。QoS等于0的PUBLISH报文不能包含报文标识符。 报文标识符用来区分报文,特别是在重发的报文中用来标识是否是同一个报文,并在需要应答的场景中用于确定是对哪个发送报文的应答。可变报头的报文标识符(Packet...
报文标识符(Packet Identifier):与 PUBLISH 报文不同,PUBACK 报文中的报文标识符必须存在,它用于向对端指示这是对哪一个 QoS 为 1 的 PUBLISH 报文的响应。 原因码(Reason Code):这是一个单字节的无符号整数,用于向 PUBLISH 报文的发布端指示发布结果,比如是否因为未授权而被拒绝发布。下表列出了PUBACK 报文所有...