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:只分发一次

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

重学java 37.多线程基本了解

尽管走自己的路,别被那些三言两语击倒 —— 24.5.13 一、多线程_线程和进程 进程:在内存中执行的应用程序 线程:是进程中最小的执行单元线程作用:负责当前进程中程序的运行,一个进程中至少有一个线程,一个进程还可以有多个线程,这…

Automa:一键自动化,网页数据采集与工作流程优化专家

Automa:解锁自动化浏览器潜能,赋能工作效率,让复杂任务变得简单- 精选真开源,释放新价值。 概览 Automa是一款创新的网页自动化工具,专为寻求提升工作效率、简化数据收集过程的现代工作者设计。它融合了先进的数据抓取…

EasyExcel 中实体类的注解@ExcelProperty

ExcelProperty(value "职务", index 0) value 与index 的优先级, 实测得出下面结论. 1、只有value : 按照value 的匹配 2、只有index: 按照index 的匹配 3、 同时有value和index: 按照index的匹配. 结果: 按照index的匹配, 找到的数据 {"administrat…

GO—web程序中的请求缓存设置

背景 假设用户数据存在数据库,现在需要一个函数,通过用户名称返回用户信息。 期望:在一次web请求中,不过调用多少次这个函数,只请求一次数据库。 基本信息 type User struct {Name stringAge int }func GetALLUser…

服务器3389端口,服务器3389端口风险提示的应对措施

3389端口是Windows操作系统中远程桌面协议(RDP)的默认端口。一旦该端口被恶意攻击者利用,可能会导致未经授权的远程访问和数据泄露等严重安全问题。 针对此风险,强烈建议您采取以下措施: 1. 修改默认端口:…

苹果手机系统恢复工具:轻松解决iPhone各类系统问题!

随着苹果手机的iOS系统不断升级,越来越多的系统问题不断出现,如卡在恢复模式、系统崩溃白苹果、应用无响应、等,这些问题不仅影响用户体验,还可能导致手机无法正常使用。 遇到系统问题,一般我们可以先尝试使用强制重启…

【原创】springboot+mysql校园宿舍报修管理系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

景源畅信:小白如何做抖音电商怎么样?

在数字浪潮中崛起的抖音电商,以其独特的平台优势吸引了众多创业者的目光。特别是对于初入电商领域的“小白”来说,如何在这个全新的领域站稳脚跟,成为他们迫切需要解答的问题。接下来,我们将深入探讨小白如何在抖音电商中开辟属于…

免费思维13招之十:增值型思维

免费思维13招之十:增值型思维 免费思维的另一大战略思维——增值型思维。 为了提高客户的粘性而促进重复性消费,我们必须对客户进行免费的增值型服务。 大家不要把增值型思维与赠品型思维混淆,增值型思维重心在于提高与消费者的粘性而促进重复消费,重心在后端。而赠品型思…

Spring Cloud Alibaba 分布式配置中心(9)

项目的源码地址 Spring Cloud Alibaba 工程搭建(1) Spring Cloud Alibaba 工程搭建连接数据库(2) Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3) Spring Cloud Alibaba Ribbo…

【简单介绍下Milvus】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

vue3专栏项目 -- 四、前后端结合(下)

一、async 和 await 1、使用async 和 await 改造异步请求 在接触后端API以后就遇到了越来越多的异步请求,现在我们就使用async 和 await 改造异步请求。 async function是把返回内容包裹成个Promise返回Promise await 它在async function里面才起作用&#xff0…

互联网轻量级框架整合之SpringIoC概念详解

在之前的几篇文字中说道容器的概念,实际上Spring也是基于容器的理念,之所以如此成功并不是因为很先进的技术,而是因为理念,其中核心便是IoC(控制反转),AOP(面向切面编程),其中IoC是Spring的基础&#xff0c…

腐烂的橘子 - (LeetCode)

一、概述 994. 腐烂的橘子 - 力扣(LeetCode),今天刷到这道题,开始按照自己实现的思路写了一次,通过了调试,但是提交的时候,来了一个大的数据,就没有通过测试,百思不得其…

commvault学习(7):恢复oracle

在实际生产环境中,oracle的恢复方式大部分是异机恢复。 环境: 备份机:windows server2008,ip:192.168.20.56 恢复目标机:windows server2008,ip:192.168.20.55 CS、MA&#xff1…

进程和计划任务管理

查看系统进程信息 静态查看系统进程信息之ps命令 (每五秒刷新一次数据) 方法一:ps aux //显示所有进程 a:显示现行终端下的所有进程,包括其它用户的进程。u:显示进程的归属用户及内存的使用情况。x…

今天开发了一款软件,我竟然只用敲了一个字母(文末揭晓)

软件课题:Python实现打印100内数学试题软件及开发过程 一、需求管理: 1.实现语言:Python 2.打印纸张:A4 3.铺满整张纸 4.打包成exe 先看效果: 1. 2.电脑打印预览 3.打印到A4纸效果(晚上拍的&#x…

Java入门基础学习笔记22——程序流程控制

程序流程控制:控制程序的执行顺序。 程序有哪些执行顺序? 顺序、分支和循环。 分支结构: if、switch 循环: for、while、do-while 顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码…

​​​【收录 Hello 算法】第 6 章 哈希表

目录 第 6 章 哈希表 本章内容 第 6 章 哈希表 Abstract 在计算机世界中,哈希表如同一位聪慧的图书管理员。 他知道如何计算索书号,从而可以快速找到目标图书。 本章内容 6.1 哈希表6.2 哈希冲突6.3 哈希算法6.4 小结

文本分类的深度注意图扩散网络 笔记

1 Title Deep Attention Diffusion Graph Neural Networks for Text Classification(Yonghao Liu、Renchu Guan、Fausto Giunchiglia、Yanchun Liang、Xiaoyue Feng)【EMnlp 2021】 2 Conclusion Text classification is a fundamental task with broad…