mqtt协议快速指导

来源:互联网 发布:飞鸟淘宝客 编辑:程序博客网 时间:2024/05/18 02:34

下面提及到的图x-x都是指《MQTT协议3.1.1》内容所指。

第一章:

主要讲述数据表示
1. 二进制位:并不需要解析
2. 整数数值:使用网络子序(大字端)
3. UTF-8编码:控制报文的文本字段,通读图1-1即可
1. 提及一点:两字节的长度给出了后面的数据的字节数,不包含长度字段自身占用的两个字节。
2. 后面有一个叫“编辑约定”,讲的是文本标志中的每一个一致性声明都分配一个调用格式。这个理念还真有点作用。学习一下。

第二章:

  1. 报文格式,作为整个MQTT协议的应用信息的格式组成,读者清晰了解即可。
  2. 就目前的我们首先需要修改的libemqtt客户端代码来说,可以如下理解:
    1. 固定报头
      1. 剩余长度的计算方式(编码与解码,文档中提供了算法),为可变报头和有效载荷的总长度。其中,使用UTF-8编码的就要加上长度前缀。
    2. 可变报头:协议名、协议等级、连接标志、保存连接
    3. 有效载荷,可以暂且理解为“应用信息”,也就是我们真正需要传输的“有效数据”

该章节主要理解:
1. 怎么去组成我们MQTT协议的报文?
2. 撇开服务器不讲,订阅与发布,就是真正意义上的接收者与发送者。

第三章:

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

第四章:

  1. 会话状态存储:针对服务器和客户端的会话生存时间,简单地说:若保留,则双方下次重新会话可以直接找到原始的报文标识;否则,双方需要在重新会话前重新发送原始的报文标识。
  2. 服务质量等级和协议流程:主要讲述3个等级,至于服务流程实质为报文的应答关系(具体看publish命令)
  3. 分发协议指的是不同的服务质量等级需要的行走的协议流程,这可以理解一类的流程图,看mqtt协议书的时候可以顺势画出流程图。
  4. 消息会有重发的可能性,想上面第一点所说的会话状态存储导致是否需要重发,而对于接收消息不但需要正确的协议流程,同时也需要顺序收发。
  5. 主题名和主题过滤器:
    1. 主题通配符:这里理解为主题订阅与发布的层级控制,学过数据结构的朋友最好用树的概念去理解。因为在mosquitto代理服务器里面就是应用树来存储订阅报文。
    2. 主题过滤器:也就使用通配符来过滤不合适的主题,使得发送的应用信息正确传递到对方。
0 0