MQTT学习(一)

MQTT是一种与HTTP类似的应用层协议。

在某些物联网应用中,MQTT优于HTTP。
在这里插入图片描述
首先,HTTP是用于客户端服务器计算的以文档为中心的请求-响应协议。
HTTP是万维网的基础,但它不是专门为机器之间通信而设计的。

MQTT是一种机器对机器、以数据为中心的轻量级协议。用于在资源受限的环境中运行。

许多物联网项目要求设备在各种资源有限下运行。
在这里插入图片描述
与HTTP中的直接客户端服务器交互不同。
在这里插入图片描述
MQTT在发布/订阅范例下运行,中间有MQTT代理。

在这里插入图片描述
客户端可以将主题发布到MQTT代理或订阅主题。

MQTT还允许MQTT客户端和代理之间的持久连接,以及不同的服务质量级别。
在这里插入图片描述
连接到MQTT代理的所有设备都是MQTT客户端。
MQTT客户端的范围从计算机到移动电话,再到小型受限的传感器设备。

MQTT代理是一个MQTT服务器。

阿里云物联网简介

产品:设备的集合,通常指一组具有相同功能的设备。物联网平台为每个产品颁发全局唯一的productKey。每个产品下最多可以包含50万个设备。

设备:归属于某个产品下的具体设备。物联网平台为设备颁发产品内唯一的证书DeviceName。设备可以直接连接物联网平台,也可以作为子设备通过网关连接物联网平台。

Topic:Topic是UTF-8字符串,是发布(Pub)/订阅(Sub)消息的传输中介。可以向Topic发布或者订阅消息。

Topic类:同一产品下不同设备的Topic集合,用 p r o d u c t K e y 和 {productKey}和 productKey{deviceName}通配一个唯一的设备,一个Topic类对一个ProductKey下所有设备通用。

在这里插入图片描述

  • 设备接入:传统开发需要搭建基础设施,联合嵌入式开发人员与云端开发人员共同开发。开发工作量大,效率低。基于阿里云物联网平台的开发,提供设备端SDK,快速连接设备上云,效率高。同时支持全球设备接入、异构网络设备接入、多环境下设备接入和多协议设备接入。
  • 性能:传统开发需要自行实现扩展性架构,极难做到从设备粒度调度服务器、负载均衡等基础设施。基于阿里云物联网平台的开发,具有亿级设备的长连接能力、百万级并发处理能力,架构支撑水平性扩展。
  • 安全:传统开发需要额外开发、部署各种安全措施,保障设备数据安全是个极大挑战。基于阿里云物联网平台的开发提供多重防护,保障设备数据安全。设备认证保障设备安全与唯一性。传输加密保障数据不背篡改。云盾护航和权限校验保障云端安全。
  • 传统开发需要自行发现宕机,并完成迁移。迁移时服务会中断。稳定性无法保障。而基于阿里云物联网平台的开发,服务可用性高达99.9%,去中心化,无单点依赖。拥有多数据中心支持。
  • 传统开发需要购买服务器搭建负载均衡分布式架构,需要花费大量人力物力开发“接入+计算+存储”一整套物联网系统。
  • 一站式设备管理、实时监控设备场景、无缝连接阿里云产品。可灵活简便地搭建复杂物联网应用。

操作步骤

在这里插入图片描述

CONNECT控制报文

固定报头+可变报头+有效载荷

  • 固定报头:必须存在,用于描述报文信息。里面有指出什么类型的报文,报文的等级。
  • 可变报头:不一定存在,主要看什么样子类型的报文。
  • 有效载荷部分:这是内容。也是通信信息的存放的地方,只是有时候还会存放一些额外的信息。如客户ID。

在这里插入图片描述
固定报头(2字节)
在这里插入图片描述
可变报头

  • 协议名
    在这里插入图片描述

  • 协议级别
    在这里插入图片描述

  • 连接标志
    在这里插入图片描述

  • 保持连接
    保持连接(Keep Alive)是一个以秒为单位的时间间隔,表示为一个16位的字,它是指在客户端传输完成一个控制报文的时刻到发送下一个报文的时刻,两者之间允许空闲的最大时间间隔。
    客户端负责保证控制报文发送的时间间隔不超过保持连接的值。如果没有任何其他的控制报文可以发送,客户端必须发送一个PINGREQ报文。

在这里插入图片描述
在这里插入图片描述
有效载荷:客户端标识符+用户名+密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
UTF-8编码字符串,每一个字符串都有一个两字节的长度字段作为前缀。

连接返回码的值
在这里插入图片描述
在这里插入图片描述

剩余长度

在这里插入图片描述
剩余长度表示当前报文剩余部分的字节数,包括可变报头和负载的数据。

在这里插入图片描述

  • 剩余长度字段使用一个变长度编码方案,对小于128的值,它使用单字节编码。
  • 低7位有效位用于编码数据,最高有效位用于指示是否有更多的字节。剩余长度字段最大4个字节。

在这里插入图片描述
第7位为提示位,表示后面还有字节来表示。
低字节在前,高字节在后
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务质量QOS

报文在发送的过程中可能存在丢失的情况,最直接的解决方案就是重新发送。

服务质量就是表示报文要分送几次。

  • QOS 0:最多分发一次
  • QOS 1:至少分发一次
  • QOS 2:只分发一次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习在数据分析中的应用:探索未来趋势

引言 数据分析是机器学习应用最广泛和最成熟的领域之一。随着大数据时代的到来,企业和组织正越来越多地利用机器学习技术来从海量数据中提取有价值的洞察。在本博客中,我们将探讨机器学习在数据分析中的几个关键方向、场景和应用实例。 数据分析的方向…

Flutter for Web:跨平台移动与Web开发的新篇章

Flutter是Google推出的一款开源的UI工具包,用于构建高性能、高保真度的跨平台应用程序。Flutter最初专注于移动平台,但随着Flutter for Web的推出,它也扩展到了Web开发领域。本文将深入解析Flutter for Web的架构、核心概念、开发流程、性能优…

ALOHA多相机Realsense配置以及数据采集

简介 在诸多模仿学习的工作中,均使用到多个Realsense相机作为数据输入端。本文探讨多个Realsense的ros节点启动。 环境配置 librealsense realsense_ros#python h5py opencv-python多相机启动 ALOHA工程仅需要彩色图像进行输入。因此需要只保留彩色图像&#xf…

树与图的一些计数问题(图论学习总结部分内容)

文章目录 前言七、树与图的一些计数问题(偏数学)容斥原理知识点例题 e g 1 : eg1: eg1: 完全子图染色问题 e g 2 : eg2: eg2: D A G DAG DAG计数 生成树计数知识点例题 环计数问题练习题 前言 由于图论学习总结内容过多,全放在一篇博客过于…

QLineEdit文本长度和框宽度的比较问题

开发环境 操作系统: 银河麒麟V10SP1qt版本 : 5.12.12背景 测试同事提出,QLineEdit中设置的占位符(由setPlaceholderText函数设置)文本能完全显示时不要显示tips,不完全显示时要显示tips,这样显得简洁。 想了想逻辑上比较好实现,那就是占位符文本长度大于QLineEdit宽度就显示…

Python pyqtgraph库:高效可视化数据的利器

更多Python学习内容:ipengtao.com 在数据科学和工程领域,数据可视化是一项非常重要的任务。Python pyqtgraph库是一个功能强大的数据可视化工具,可以帮助用户快速、高效地可视化各种类型的数据,包括实时数据、大数据集和3D数据等。…

PostgreSQL-常用函数和操作符-2

0. WITH 在 PL/pgSQL 中,WITH 子句通常用于创建一个临时结果集,这个结果集在执行 SQL 查询时使用。这个临时结果集通常被称为一个公共表表达式(Common Table Expression, CTE)。CTE 允许您在查询中引用它,就像引用一个…

Kerberos-梳理

服务端: yuminstall-ykrb5-server vim/var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports=88 kdc_tcp_ports=88 [realms] HADOOP.COM={#master_key_type=aes256-cts acl_file=/var/kerberos/krb5kdc/kadm5.acl dict_file=/usr/share/dict/words admin_keytab=/var/kerbe…

英伟达解码性能NVDEC

如果你能打开官网,请看这里: NVDEC Application Note 下面是摘录:

STL---排序模板参数

map 对map进行排序 首先一定要注意map模板类的第三个模板参数&#xff0c;这个参数决定元素按键值升序或者降序在map中的存储方式&#xff1a; 默认&#xff1a;less<key>升序----- < -----第一个小于取第一个 可设置&#xff1a;greater<key>降序-------…

VC 编程开发中的 封装类 :log日志类 和SQL server 操作类 源代码

VC 编程开发中的 封装类 &#xff1a;日志类 和SQL server 操作类 源代码 在VC&#xff08;Visual C&#xff09;开发中&#xff0c;日志文件输出是一个至关重要的环节&#xff0c;它对于程序调试、问题排查以及系统监控等方面都具有不可替代的作用。以下是对日志文件输出在VC开…

ASP.NET仪器设备管理系统设计与实现

摘 要 文中以某中小型企业的设备管理为例&#xff0c;对设备管理系统的设计与应用进行研究&#xff0c;旨在通过设备管理系统提高内部设备的利用率及实现其最大的经济效益。文中首先对设备管理的现状及其重要性进行了分析&#xff0c;分析实现设备管理信息系统的必要性与可行…

如何在windows server下安装mysql5.7数据库,并使用Navicat Premium 15可视化工具新建数据库并读取数据库信息。

如何在windows server下安装mysql5.7数据库&#xff1f; MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/点击↑&#xff0c;然后选择对应版本和平台↓下载 将下载后的安装包放入固定目录&#xff08;这里以D:…

AI学习指南概率论篇-随机变量和随机过程

AI学习指南概率论篇-随机变量和随机过程 随机变量和随机过程是概率论中重要的概念&#xff0c;也是在人工智能领域中经常应用的概念。本文将介绍随机变量和随机过程的概述&#xff0c;它们在AI中的使用场景&#xff0c;定义和意义&#xff0c;以及相关的公式讲解&#xff0c;并…

蓝桥杯备战17.bitset砝码称重

P2347 [NOIP1996 提高组] 砝码称重 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) bitset 用来存储二进制 #include<bits/stdc.h> using namespace std; #define endl \n #define int long long const int N 2e510; int w[] {0,1,2,3,5,10,20}; signed main() {std…

电商选品的数据是可以用爬虫进行采集的吗?

在电子商务领域&#xff0c;选品是一个至关重要的环节&#xff0c;它直接影响到商家的销售业绩和市场竞争力。为了做出更明智的选品决策&#xff0c;商家需要获取大量的市场数据和产品信息。那么&#xff0c;电商选品的数据是否可以通过爬虫进行采集呢&#xff1f; 爬虫在电商数…

更适合户外使用的开放式耳机,佩戴舒适音质悦耳,虹觅HOLME NEO体验

随着气温的逐渐升高&#xff0c;不管是在室内工作娱乐&#xff0c;还是到户外运动健身&#xff0c;戴上一款合适的耳机都会帮我们隔绝燥热与烦闷&#xff0c;享受音乐与生活。现在市面上的耳机类型特别多&#xff0c;我很喜欢那种分体式的开放耳机&#xff0c;感觉这种耳机设计…

亚信安慧AntDB:颠覆传统的开放创新数据库生态

亚信安慧AntDB是亚信科技自主研发的一款颠覆传统的开放创新数据库产品。它引入了分布式架构&#xff0c;通过数据的弹性伸缩、 容灾容错和负载均衡等技术手段&#xff0c;实现了高性能、高可靠性和高可扩展性的数据存储和处理能力。不仅如此&#xff0c;亚信安慧 AntDB还具备…

从头开始学Spring—02基于XML管理bean

目录 1.实验一&#xff1a;入门案例 2.实验二&#xff1a;获取bean 3.实验三&#xff1a;依赖注入之setter注入 4.实验四&#xff1a;依赖注入之构造器注入 5.实验五&#xff1a;特殊值处理 6.实验六&#xff1a;为类类型属性赋值 7.实验七&#xff1a;为数组类型属性赋值…

掌握决策之道:层次分析法(AHP)的步骤、应用与局限性

目录 一、层次分析法简介 举一个小例子&#xff1a; 评价类问题可用打分解决&#xff0c;比如&#xff1a;小华高考结束后&#xff0c;在华科和武大两所学校之间做抉择。 评价类问题可用打分解决 二、层次分析法的步骤 &#xff08;一&#xff09;一道引出层次分析法的例…