publish
PUBLISH控制报文是指从客户端向服务端或者服务端向客户端传输一个应用消息。
需要注意的是:上传更新数据流是PUBLISH 中一个特殊的上传方式(发送给 $dp话题),PUBLISH 不等于上传更新数据流。
PUBLISH 更像是发送邮件,而更新数据是针对某一特定数据流进行数据更新。
固定报头
重发标志 DUP
位置:第1个字节,第3位
如果DUP标志被设置为0,表示这是客户端或服务端第一次请求发送这个PUBLISH报文。如果DUP标志被设置为1,表示这可能是一个早前报文请求的重发。
客户端或服务端请求重发一个PUBLISH报文时,必须将DUP标志设置为1。
对于QoS 0的消息,DUP标志必须设置为0。
服务端发送PUBLISH报文给订阅者时,收到(入站)的PUBLISH报文的DUP标志的值不会被传播。
发送(出站)的PUBLISH报文与收到(入站)的PUBLISH报文中的DUP标志是独立设置的,它的值必须单独的根据发送(出站)的PUBLISH报文是否是一个重发来确定。
服务质量等级
位置:第1个字节,第2-1位。
保留标志 RETaiN
位置:第1个字节,第0位。
如果客户端发给服务端的PUBLISH报文的保留(retain)标志被设置为1,服务端必须存储这个应用消息和它的服务质量等级(QoS)。
即将消息存储起来,以后有客户端订阅该主题就把之前的消息发出去
剩余长度字段
等于可变报头的长度加上有效载荷的长度。
可变报头
主题名 topic Name
主题名(Topic Name)用于识别有效载荷数据应该被发布到哪一个信息通道。
主题名必须是PUBLISH报文可变报头的第一个字段。
PUBLISH报文中的主题名不能包含通配符。
报文标识符 Packet Identifier
只有当QoS等级是1或2时,报文标识符(Packet Identifier)字段才能出现在PUBLISH报文中。
如下为PUBLISH 报文可变报头示例:
因为主题名占了3字节,故报文标识符为10
有效载荷
有效载荷包含将被发布的应用消息。即纯文本字符串、JSON 字符串。
数据的内容和格式是应用特定的。
响应
PUBLISH报文的接收者必须按照根据PUBLISH报文中的QoS等级发送响应
动作 Actions
客户端使用PUBLISH报文发送应用消息给服务端,目的是分发到其它订阅匹配的客户端。
服务端使用PUBLISH报文发送应用消息给每一个订阅匹配的客户端。
相关阅读
IP协议简介 IP协议是位于网络层的协议,首先我们要知道网络层的功能:负责为数据选择合适的路径进行传输。 而IP协议的功能是寻址和
具体细节待完善!!一、实验目的:通过本实验,熟悉PacketTracer的使用,学习在PacketTracer中仿真分析应用层和传输层协议,进一步加深对协议
Socket编程(C语言实现)——基于TCP协议,基于UDP协议(多线
Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该
Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子
1、Zigbee协议栈简介协议是一系列的通信标准,通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式,通
转自:http://baijiahao.baidu.com/s?id=1586302823192131962&wfr=spider&for=pcMODBUS通讯协议,是1979年由美国Modicon 公司提出的,