首页 > 其他分享 >MQTT入门

MQTT入门

时间:2022-11-25 11:12:57浏览次数:61  
标签:订阅 UTF 入门 1.2 MQTT 字节 客户端

参考文档:

  • http://docs.oasis-open.org/mqtt/mqtt/v5.0/csprd02/mqtt-v5.0-csprd02.html
  • https://github.com/mcxiaoke/mqtt  

摘要

MQTT 是物联网 (IoT) 最常用的消息传递协议。 MQTT 代表 MQ 遥测传输。该协议是一组规则,定义了物联网设备如何通过互联网发布和订阅数据。 MQTT 用于物联网和工业物联网 (IIoT) 设备之间的消息传递和数据交换,例如嵌入式设备、传感器、工业 PLC 等。该协议是事件驱动的,并使用发布/订阅 (Pub/Sub) 模式连接设备。发送者(Publisher)和接收者(Subscriber)通过 Topics 进行通信,相互解耦。它们之间的连接由 MQTT 代理处理。 MQTT 代理过滤所有传入消息并将它们正确分发给订阅者。它的设计思想是轻巧、开放、简单、规范,因此易于实现。这些特点使得它对很多场景来说都是很好的选择,包括受限的环境如机器与机器的通信(M2M)以及物联网环境(IoT),这些场景要求很小的代码封装或者网络带宽非常昂贵。

本协议运行在TCP/IP,或其它提供了有序、可靠、双向连接的网络连接上。它有以下特点:

  • 使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦。
  • 消息传输不需要知道负载内容。
  • 提供三种等级的服务质量:.① “最多一次”,尽操作环境所能提供的最大努力分发消息。消息可能会丢失。例如,这个等级可用于环境传感器数据,单次的数据丢失没关系,因为不久之后会再次发送。② “至少一次”,保证消息可以到达,但是可能会重复。③ “仅一次”,保证消息只到达一次。例如,这个等级可用在一个计费系统中,这里如果消息重复或丢失会导致不正确的收费。
  • 很小的传输消耗和协议数据交换,最大限度减少网络流量。
  • 异常连接断开发生时,能通知到相关各方。

1、MQTT概述

1.2、术语 Terminology

本规范中用到的关键字 必须 MUST,不能 MUST NOT,要求 REQUIRED,将会 SHALL,不会 SHALL NOT,应该 SHOULD,不应该 SHOULD NOT,推荐 RECOMMENDED,可以 MAY,可选 OPTIONAL 都是按照 IETF RFC 2119 [RFC2119] 中的描述解释。

1.2.1、网络连接 NetWork Connection

MQTT使用的底层传输协议基础设施。

  • 客户端使用它连接服务端。
  • 它提供有序的、可靠的、双向字节流传输。

1.2.2、应用消息 Application Message

MQTT协议通过网络传输应用数据。应用消息通过MQTT传输时,它们有关联的服务质量(QoS)和主题(Topic)。

1.2.3、客户端 Client

使用MQTT的程序或设备。客户端总是通过网络连接到服务端。它可以

  • 发布应用消息给其它相关的客户端。
  • 订阅以请求接受相关的应用消息。
  • 取消订阅以移除接受应用消息的请求。
  • 从服务端断开连接。

1.2.4、服务端 Server

一个程序或设备,作为发送消息的客户端和请求订阅的客户端之间的中介。服务端

  • 接受来自客户端的网络连接。
  • 接受客户端发布的应用消息。
  • 处理客户端的订阅和取消订阅请求。
  • 转发应用消息给符合条件的已订阅客户端。

1.2.5、订阅 Subscription

订阅包含一个主题过滤器(Topic Filter)和一个最大的服务质量(QoS)等级。订阅与单个会话(Session)关联。会话可以包含多于一个的订阅。会话的每个订阅都有一个不同的主题过滤器。

1.2.6、主题名 Topic Name

附加在应用消息上的一个标签,服务端已知且与订阅匹配。服务端发送应用消息的一个副本给每一个匹配的客户端订阅。

1.2.7、主题过滤器 Topic Filter

订阅中包含的一个表达式,用于表示相关的一个或多个主题。主题过滤器可以使用通配符。

1.2.8、会话 Session

客户端和服务端之间的状态交互。一些会话持续时长与网络连接一样,另一些可以在客户端和服务端的多个连续网络连接间扩展。

1.2.9、控制报文 MQTT Control Packet

通过网络连接发送的信息数据包。MQTT规范定义了十四种不同类型的控制报文,其中一个(PUBLISH报文)用于传输应用消息。

1.5、数据表示 Data representations

1.5.1、二进制位 Bits

字节中的位从0到7。第7位是最高有效位,第0位是最低有效位。

1.5.2、整数数值 Integer data values

整数数值是16位,使用大端序(big-endian,高位字节在低位字节前面)。这意味着一个16位的字在网络上表示为最高有效字节(MSB),后面跟着最低有效字节(LSB)。

1.5.3、UTF-8编码字符串 UTF-8 encoded strings

后面会描述的控制报文中的文本字段编码为UTF-8格式的字符串。UTF-8 [RFC3629] 是一个高效的Unicode字符编码格式,为了支持基于文本的通信,它对ASCII字符的编码做了优化。

每一个字符串都有一个两字节的长度字段作为前缀,它给出这个字符串UTF-8编码的字节数,它们在图例 1.1 UTF-8编码字符串的结构 中描述。因此可以传送的UTF-8编码的字符串大小有一个限制,不能超过 65535字节。

除非另有说明,所有的UTF-8编码字符串的长度都必须在0到65535字节这个范围内。

图例 1.1 UTF-8编码字符串的结构 Structure of UTF-8 encoded strings
二进制位 7-0
byte 1 字符串长度的最高有效字节(MSB)
byte 2 字符串长度的最低有效字节(LSB)
byte 3 …. 如果长度大于0,这里是UTF-8编码的字符数据。

 

 

1.5.4、

 

 

2、MQTT控制报文格式

3、MQTT控制报文

4、操作行为

5、安全

6、使用WebSocket

7、一致性目标

8、强制性规范声明

标签:订阅,UTF,入门,1.2,MQTT,字节,客户端
From: https://www.cnblogs.com/aoe1231/p/16924502.html

相关文章

  • Python 基础(一):入门必备知识
    教程源码下载sv20.com目录1标识符2关键字3引号4编码5输入输出6缩进7多行8注释9数据类型10运算符10.1常用运算符10.2运算符优先级基础进阶爬虫自动化数据分析......
  • 3.3 Docker最新入门教程-Docker入门-更新应用程序
    3.3更新应用程序在第2部分中,您容器化了一个待办事项应用程序。在这一部分中,您将更新应用程序和容器镜像。您还将学习如何停止和删除容器。更新源代码在下面的步骤中,......
  • 学习《Python编程 从入门到实践》第二、三天
    近期比较忙,宝宝的预产期是12月17日,老婆每天都跟我说准备要生了。所以昨天看了一会就做家务活了,练习完后忘记写日记了。今天给补上。 为什么突然想学编程呢?其实是平常......
  • Vue脚手架,从入门到放弃
    创建Vue脚手架Vue脚手架是官方提供的标准化开发工具(最新4.x版本)网址:https://cli.vuejs.org/zh/guide/安装使用淘宝镜像源安装npminstall--location=globalcnp......
  • 毫米波雷达入门知识
    1、FMCW------概括FMCW:调频连续波,有时也可以写成LFMCW或者LinearFMCW。现在普遍用于汽车雷达这一行业里,它的发射信号频率随着时间线性变化(也就是我们平常所说的chi......
  • 【2022-11-24】爬虫从入门到入狱(二)
    一、request高级用法1.1ssl认证#证书验证(大部分网站都是https)importrequestsres=requests.get('https://www.12306.cn')#如果是ssl请求,首先检查证书是否......
  • 爬虫从入门到入狱(二)
    今日内容概要requests高级用法代理池搭建爬取某视频网站爬取新闻BautifulSoup4介绍bs4遍历文档树今日内容详细requests高级用法ssl认证#https和http有什......
  • Kubernetes 1.3 从入门到进阶 安装篇:minikube
    Kubernetes单机运行环境一直是一个没有得到重视的问题。现在我们有了minikube,一个用go语言开发的可以在本地运行kubernetes的利器,不过目前应该只是支持kubernetes1.3。如果......
  • FileNotFoundError: [Errno 2] No such file or directory: ‘sample_weight.pkl‘《
    报错的意思是没有找到“sample_weight.pkl”这个文件的地址或者路径解决方法:将本书的源代码文件夹改名为Deeplearningfromscratchcode并存放至jupyternotebook存放文......
  • python入门基础之主键、外键、约束条件
    python入门基础之主键、外键、约束条件目录python入门基础之主键、外键、约束条件字段约束条件主键自增外键前戏关系的判断外键字段的建立多对多关系一对一关系字段约束......