您的位置:首页 > 编程语言 > Qt开发

mqtt协议快速指导

2016-09-17 09:25 162 查看
下面提及到的图x-x都是指《MQTT协议3.1.1》内容所指。

第一章:

主要讲述数据表示

1. 二进制位:并不需要解析

2. 整数数值:使用网络子序(大字端)

3. UTF-8编码:控制报文的文本字段,通读图1-1即可

1. 提及一点:两字节的长度给出了后面的数据的字节数,不包含长度字段自身占用的两个字节。

2. 后面有一个叫“编辑约定”,讲的是文本标志中的每一个一致性声明都分配一个调用格式。这个理念还真有点作用。学习一下。

第二章:

报文格式,作为整个MQTT协议的应用信息的格式组成,读者清晰了解即可。

就目前的我们首先需要修改的libemqtt客户端代码来说,可以如下理解:

固定报头

剩余长度的计算方式(编码与解码,文档中提供了算法),为可变报头和有效载荷的总长度。其中,使用UTF-8编码的就要加上长度前缀。

可变报头:协议名、协议等级、连接标志、保存连接

有效载荷,可以暂且理解为“应用信息”,也就是我们真正需要传输的“有效数据”

该章节主要理解:

1. 怎么去组成我们MQTT协议的报文?

2. 撇开服务器不讲,订阅与发布,就是真正意义上的接收者与发送者。

第三章:

本章内容就不再此详述,建议读者首先将3.1节内容看通透,其余的用到查阅。

第四章:

会话状态存储:针对服务器和客户端的会话生存时间,简单地说:若保留,则双方下次重新会话可以直接找到原始的报文标识;否则,双方需要在重新会话前重新发送原始的报文标识。

服务质量等级和协议流程:主要讲述3个等级,至于服务流程实质为报文的应答关系(具体看publish命令)

分发协议指的是不同的服务质量等级需要的行走的协议流程,这可以理解一类的流程图,看mqtt协议书的时候可以顺势画出流程图。

消息会有重发的可能性,想上面第一点所说的会话状态存储导致是否需要重发,而对于接收消息不但需要正确的协议流程,同时也需要顺序收发。

主题名和主题过滤器:

主题通配符:这里理解为主题订阅与发布的层级控制,学过数据结构的朋友最好用树的概念去理解。因为在mosquitto代理服务器里面就是应用树来存储订阅报文。

主题过滤器:也就使用通配符来过滤不合适的主题,使得发送的应用信息正确传递到对方。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: