从物联网需求到MQTT协议(下)|学习笔记

简介: 快速学习从物联网需求到MQTT协议(下)

开发者学堂课程【大咖带你聊物联网:从物联网需求到MQTT协议(下)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/571/detail/7779


从物联网需求到 MQTT 协议(下)

一、理解 MQTT 协议

二、MQTT 特点

三、MQTT 传输消息分类

四、MQTT 的组成

五、实例感受 MQTT 协议的过程和特点

六、HTTP 协议与 MQTT 协议对比

一、理解 MQTT 协议

TCP/IP 参考模型可以分为四层:应用层、传输层、网络层、链路层。TCP 和 UDP 位于传输层,应用层常见的协议有HTTP、FTP、SSH 等。MQTT 协议运行于 TCP 之上,属于应用层协议,因此只要是支持 TCP/IP 协议栈的地方,都可以使用 MQTT。

实现 MQTT 协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT 协议中有三种身份:发布者( Publish )、代理( Broker )(服务器)、订阅者( Subscribe )。其中,消息的发布者和订阅者都客户端,消息代理是服务器,消息发布者可以同时是订阅者。


二、MQTT 特点

小型传输,开销很小(固定长度的头部是⒉字节),协议交换最小化,以降低网络流量。

1、使用发布/订阅消息模式,提供一对多的消息发布。

2、小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量。

3、有 Qo5,三种消息发布服务质量:

"至多一次,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

"至少—次",确保消息到达,但消息重复可能会发生。

“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

4、这个轻量级协议可在严重受限的设备硬件和高延迟/带宽有限的网络上实现。


三、MQTT传输消息分类

MQTT传输的消息分为:主题( Topic )和负载( payload )两部分:

(1) Topic,可以理解为消息的类型,订阅者订阅( Subscribe )后,就会收到该主题的消息内容( payload ) ;

(2) payload ,可以理解为消息的内容,是指订阅者具体要使用的内容


四、MQTT 的组成

(1)固定头( Fixed header )。存在于所有 MQTT 数据包中,表示数据包类型及数据包的分组类标识。它是有两个字节,第一个字节 4Byte 用于传输 MQTT 的数据包类型。

包括下面这些连接、发布,指示这个包的类型,另外,后面四个字节大多数是保留的。主要是发布的时候可以定义 QS 和重传和回传的特性。

(2)可变头( Variable header )。存在于部分 MQTT 数据包中,数据包类型决定了可变头是否存在及其具体内容。MQTT 数据包中包含一个可变头,它驻位于固定的头和负载之间。

可变头的内容因数据包类型而不同,较常的应用是作为包的标识。不同的包类型,它定义的内容也不一样。

(3)消息体( Payload )。存在于部分 MQTT 数据包中,表示客户端收到的具体内容。


五、实例感受 MQTT 协议的过程和特点

进入阿里 LoT 平台那这里,首先展示一下 LoT 平台的一些特点,首先如何进入这里简单介绍一下,在产品服务里面,选择互联网,可以看到在业务服务里面有物联网平台,点击进去就可以看到物联网平台这里没有快速入门,点开设备管理里面选择产品,这里已经创建好的产品,第一次进入的时候可以创建自己的产品,可以选择技术百分高级版,这里是一个计数板,计数板之后创建之后这里产生了一个重要的一个 Productkey ,

Productkey 产品创建之后有平台分配给我了一个 key 来标注这个产品的,也就是说一个公司可能有多个产品,那么针对这个产品会给一个产品编号,这个产品编号定了之后,就可以在这个产品下添加设备。之后可以按照产品分类,刚刚建立的 Ailibox ,这个产品已经建立好了两个设备,可以继续添加我的设备。

确定之就会产生三个重要的数据,刚刚已经产生一个 ProductKey ,第二个是 devicename ,这是刚刚定义的,第三个就是 DeviceSecret ,密码是根据归属的产品号,和产品设备名称和设备密码,也就是实际上是一个设备,一个密码。

产生之后,就会多了一个设备,但是先不用这个设备,已经创建好的两个设备可以看到点击查看之后这个设备名称一样,关键的三个叫三元组,同时密码总被隐藏起来。

之后就可以用这个三元组产生接入的关键信息,然后让设备接入到平台,用两个软件分别接入阿里LT平台,第一个就是刚刚创建的第一个设备,AiliboxGPS,第二个是 Ailibox GPS2 ,点击连接之后,就可以连上平台,那连上之后的领域它就会显示成绿色,如果连接错误就会显示成红色,有错误的说明,连接之后可以看到每一个设备,它默认会产生几个 topic ,产生三个 topic ,设备具备的订阅的权限,也可以进行消息发布。下面用抓包工具来看一下 MQTT 的通信过程以及具体的协议内容。

首先打开抓包工具,同时打开,刚刚已经建立好的,能够连接到阿里 LOT 平台的这个工具,同时,这个配置参数已经按照的案例的要求已经配置好了,然后现在设备是可以连接的,先看看,然后打开抓包工具,监控 MQTT 数据,点击连接,这时候已经有 MQTT 的包发出来,然后并且有其它连接响应,命令等等,这些包信息已经发出来了,然后关闭监控,首先来看连接的包年包里面,它显示的就是包头信息、信息的形式、连接命令消息长度,但是虽然是表达了这个含义,大家可以看到,比如说第一个消息类型,还记得结构的描述,这里面只用了一个 byte 来表示。

对于处理器来说,它只是处理一个字节的信息。这样的处理方式有什么好处?

当用串口来传输数据的时候,就是一个字节一个字节的传输到一个字节,传输过来了之后,直接分解分析里面的01代码,就可以对数据进行了识别,同样的连接返回的命令,也看到这个包的内容是非常短的,每一个信息上面是它表达表达的含义,下面,就是它实际对应的一个二进制的一个字符,所以整个在传输的时候所需要的带宽开销跟处理开销都非常的小,这就是 MQTT 的具体的结构,它的优势在物联网里面是非常明显的。


六、HTTP 协议与 MQTT 协议对比

HTTP

MQTT

机密性

协议开销性

适应不稳定的网络

低功耗

服务器信息推送

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
7月前
|
监控 网络协议 物联网
你知道什么是物联网MQTT么?
你知道什么是物联网MQTT么?
100 0
|
1月前
|
数据采集 传感器 监控
多协议网关BL110钡铼6路RS485转MQTT协议云网关
BL110钡铼6路RS485转MQTT协议云网关是一款高性能、易配置的工业级设备,适用于各种需要远程监控和数据采集的物联网应用场景。通过将传统RS485设备的数据转换为MQTT协议并上传至云平台,实现了设备的远程管理和智能控制,极大地提升了系统的管理效率和响应速度。
35 2
|
3月前
|
网络协议 物联网 网络性能优化
物联网协议比较 MQTT CoAP RESTful/HTTP XMPP
【10月更文挑战第18天】本文介绍了物联网领域中四种主要的通信协议:MQTT、CoAP、RESTful/HTTP和XMPP,分别从其特点、应用场景及优缺点进行了详细对比,并提供了简单的示例代码。适合开发者根据具体需求选择合适的协议。
81 5
|
4月前
|
消息中间件 监控 物联网
MQTT协议对接及RabbitMQ的使用记录
通过合理对接MQTT协议并利用RabbitMQ的强大功能,可以构建一个高效、可靠的消息通信系统。无论是物联网设备间的通信还是微服务架构下的服务间消息传递,MQTT和RabbitMQ的组合都提供了一个强有力的解决方案。在实际应用中,应根据具体需求和环境进行适当的配置和优化,以发挥出这两个技术的最大效能。
245 0
|
4月前
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【9月更文挑战第3天】物联网(IoT)的兴起催生了多种通信协议,如MQTT、CoAP、RESTful/HTTP和XMPP,各自适用于不同场景。本文将对比这些协议的特点、优缺点,并提供示例代码。MQTT轻量级且支持QoS,适合大规模部署;CoAP基于UDP,适用于低功耗网络;RESTful/HTTP易于集成但不适合资源受限设备;XMPP支持双向通信,适合复杂交互应用。通过本文,开发者可更好地选择合适的物联网通信协议。
54 2
|
5月前
|
网络协议 物联网 网络性能优化
物联网江湖风云变幻!MQTT CoAP RESTful/HTTP XMPP四大门派谁主沉浮?
【8月更文挑战第14天】本文概览了MQTT、CoAP、RESTful/HTTP及XMPP四种物联网通信协议。MQTT采用发布/订阅模式,轻量高效;CoAP针对资源受限设备,基于UDP,低延迟;RESTful/HTTP易于集成现有Web基础设施;XMPP支持双向通信,扩展性强。每种协议均附有示例代码,助您根据不同场景和设备特性作出最佳选择。
44 5
|
5月前
|
物联网 C# 智能硬件
智能家居新篇章:WPF与物联网的智慧碰撞——通过MQTT协议连接与控制智能设备,打造现代科技生活的完美体验
【8月更文挑战第31天】物联网(IoT)技术的发展使智能家居设备成为现代家庭的一部分。通过物联网,家用电器和传感器可以互联互通,实现远程控制和状态监测等功能。本文将探讨如何在Windows Presentation Foundation(WPF)应用中集成物联网技术,通过具体示例代码展示其实现过程。文章首先介绍了MQTT协议及其在智能家居中的应用,并详细描述了使用Wi-Fi连接方式的原因。随后,通过安装Paho MQTT客户端库并创建MQTT客户端实例,演示了如何编写一个简单的WPF应用程序来控制智能灯泡。
171 0
|
5月前
|
物联网 网络性能优化 Python
"掌握MQTT协议,开启物联网通信新篇章——揭秘轻量级消息传输背后的力量!"
【8月更文挑战第21天】MQTT是一种轻量级的消息传输协议,以其低功耗、低带宽的特点在物联网和移动应用领域广泛应用。基于发布/订阅模型,MQTT支持三种服务质量级别,非常适合受限网络环境。本文详细阐述了MQTT的工作原理及特点,并提供了使用Python `paho-mqtt`库实现的发布与订阅示例代码,帮助读者快速掌握MQTT的应用技巧。
101 0
|
6月前
|
消息中间件 物联网 API
消息队列 MQ使用问题之如何在物联网项目中搭配使用 MQTT、AMQP 与 RabbitMQ
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
7月前
|
数据采集 监控 物联网
MQTT协议在智能制造中的应用案例与效益分析
【6月更文挑战第8天】MQTT协议在智能制造中的应用案例与效益分析
203 1

热门文章

最新文章

相关产品

  • 物联网平台