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.xdnf.cn/news/1421544.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

netty配置SSL、netty配置https(生产环境)

netty配置SSL、netty配置https(生产环境) 上一篇提到了如何在开发环境使用SSL:https://lingkang.top/archives/netty-pei-zhi-ssl 转自:https://lingkang.top/archives/netty-pei-zhi-https 那么netty如何使用可信任的证书呢&a…

运筹系列92:vrp算法包VROOM

1. 介绍 VROOM is an open-source optimization engine written in C20 that aim at providing good solutions to various real-life vehicle routing problems (VRP) within a small computing time. 可以解决如下问题: TSP (travelling salesman problem) CVRP …

Linux提权--SUDO(CVE-2021-3156)Polkit(CVE-2021-4034)

免责声明:本文仅做技术学习与交流... 目录 SUDO(CVE-2021-3156) 影响版本 -判断: -利用: Polkit(CVE-2021-4034) ​ -判断: -利用: 添加用户 SUDO(CVE-2021-3156) another: SUDO权限配置不当. 影响版本 由系统的内核和发…

MODIFY DUMP

写了一个modify的语句,但是dump了 查阅资料 参考一下链接 ABAP 内表修改 MODIFY 和 MODIFY table 的区别-CSDN博客

品鉴中的风味轮:如何运用专业工具解读红酒的复杂风味

品鉴云仓酒庄雷盛红酒时,我们常常会遇到各种各样复杂的味道。为了更好地理解和描述这些风味,专业工具——风味轮被引入到红酒品鉴中。通过运用风味轮,我们可以更科学、更具体地解读红酒的复杂风味。 风味轮是一种包含一系列风味和味道描述的圆…

PCIE协议-2-事务层规范-Message Request Rules-Vendor_Defined Messages

2.2.8.6 厂商定义消息 厂商定义消息允许扩展PCI Express消息功能,可以作为PCI Express规范的一般扩展,也可以是厂商特定的扩展。本节通用地定义了与这些消息相关的规则。 厂商定义消息(见表2-25)使用图2-28中显示的头标格式。re…

【车企招聘】Android车载开发全套学习资料(收藏版)

前言 随着人工智能技术的迅速发展,智能车机系统已成为汽车行业的热门趋势,旨在提升驾乘人员的体验和安全性。在中高端车型中广泛应用智能车机系统,其中包含了语音识别控制、人脸识别、手势识别、智能紧急刹车等功能,为驾驶者提供…

常用的内外网文件传输方式及优缺点

在现代企业环境中,内外网文件传输是一项至关重要的任务。这涉及到数据的安全性、传输效率以及操作的便捷性等多个方面。 每种方式都有其独特的优缺点,下面我们将逐一进行分析。 1、FileLink 优势:FileLink是一款专用于企业内外网隔离后的文…

MySQL从入门到高级 --- 6.函数

文章目录 第六章:6.函数6.1 聚合函数6.2 数学函数6.3 字符串函数6.4 日期函数6.4.1 日期格式 6.5 控制流函数6.5.1 if逻辑判断语句6.5.2 case when语句 6.6 窗口函数6.6.1 序号函数6.6.2 开窗聚合函数6.6.3 分布函数6.6.4 前后函数6.6.5 头尾函数6.6.6 其他函数6.7 …

申贷时,银行级大数据自己能查到吗?

随着金融风控的不断健全,大数据作为辅助的风控工具正在被越来越多的银行和机构使用。在进行申贷时,银行通常会进行大数据查询,以便评估申请人的信用状况。那么,这些大数据自己能查到吗?接下来本文就为大家详细介绍一下&#xff0…

怎样才能不当数据泄露的下一个受害者?

在数字化时代,数据泄露成为了所有企业必须面对的难题。无论规模大小,每家公司都可能成为黑客攻击的目标,从而遭受数据泄露的风险。然而,通过采取一系列预防措施,企业可以极大地降低成为下一个受害者的可能性。 教育员…

哪些AI软件可以帮助我快速制作PPT?推荐几个aippt工具

提起PPT,大家的第一反应就是痛苦。经常接触PPT的学生党和打工人,光看到这3个字母,就已经开始头痛了: 1、PPT内容框架与文案挑战重重,任务艰巨,耗费大量精力。 2、PPT的排版技能要求高,并非易事…

paddle ocr v4 2.6.1实战笔记

目录 效果图: 安装 模型权重是自动下载,如果提前下载会报错。 识别orc,并opencv可视化结果,支持中文可视化 官方原版预测可视化: 效果图: 安装 安装2.5.2识别结果为空 pip install paddlepaddle-gpu…

如何通过香港站群服务器高效实现网站内容的快速更新?

如何通过香港站群服务器高效实现网站内容的快速更新? 在当今激烈的数字市场竞争中,网站内容的快速更新对于吸引用户和保持竞争优势至关重要。而利用香港站群服务器实现这一目标,则具备诸多优势。下面将详细探讨如何通过香港站群服务器高效实现网站内容…

tomcat 的启动流程

tomcat 的启动流程 中 使用的Lifecycle 生命流程 。在这里还使用了设计模式中的模板模式(LifecycleBase 是一个模板类) init()方法 start() 方法 container 的处理

Linux修炼之路之权限

目录 引言 一:Linux中用户的分类 二:在Linux中的权限 1.权限的两种属性 1.人的属性 2.事物属性 -主要以文件属性为主 3.文件权限值的两种表示方式方法 2.更改文件访问者(拥有者,所属组,其他人)权限属性 3.更改文件的拥有…

FastAPI:Python打造高效API的终极武器

在Python的世界里,如果你想要一个既快速又现代的方式来构建API,那么FastAPI可能是你的首选。这个库基于Starlette(用于Web编程)和Pydantic(用于数据验证),专门为速度和易用性设计。 什么是FastA…

微信小程序Vue+uniapp餐饮美食订餐骑手配送系统9g60o

本小程序uniapp菜品帮采用Java语言和Mysql数据库进行设计,技术采用微信小程序,可以不安装App软件就实现订餐。本系统实现管理员和用户、商家、配送员四个角色的功能。用户主要在微信端操作,内容有菜品信息,用户可以在线点餐和管理…

能源管理系统中,倍讯科技Modbus TCP转CAN网关具体的连接方案

在能源管理系统中,使用倍讯科技Modbus TCP转CAN网关的连接方案通常涉及以下几个步骤: 1. 设备调研与规划: 首先,需要了解能源管理系统中所涉及的各种设备和传感器,以及它们所使用的通信协议和接口类型。 确定需要连接…

使用System.Drawing进行几何图形绘制

1.概要 使用System.Drawing进行几何图形绘制 System.Drawing 是.NET框架中的一个命名空间,提供了基本的绘图功能,包括绘制几何图形(如矩形、椭圆、线条等)。它通常用于Windows Forms应用程序中的绘图。你可以使用 Graphics 类来…