【网络应用层协议】【MQTT】详解消息队列遥测传输协议MQTT(超详细)

目录

1. MQTT 协议简介

2. MQTT 的特点

3. MQTT 协议原理

4. MQTT协议中的订阅、主题、会话


1. MQTT 协议简介

        MQTT( Message Queuing Telemetry Transport,消息队列遥测传输协议 )是一种消息列队传输协议,采用订阅、发布机制,订阅者只接收自己已经订阅的数据,非订阅数据则不接收,既保证了必要的数据的交换,又避免了无效数据造成的储存与处理。

        它是一种基于发布/订阅( publish/subscribe )模式的 “ 轻量级 ” 通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 在 1999 年发布。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

2. MQTT 的特点

        MQTT 协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

        MQTT 协议当前版本为,2014 年发布的 MQTT v3.1.1。除标准版外,还有一个简化版 MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于 TCP/IP 网络,如:ZigBee。

        MQTT 协议运行在 TCP/IP 或其他网络协议,提供有序、无损、双向连接。其特点包括:


轻量级
        MQTT协议设计简单轻巧,数据包头部较小,使其在低带宽、高延迟的网络环境中运行效率高,可以对比HTTP协议,HTTP协议的数据报头较大,就算是不携带任何的数据,都有一定字节的大小,但是MQTT的报头只有一个字节。

发布-订阅模式
        MQTT采用发布者(Publisher)和订阅者(Subscriber)模式,发布者负责将消息发布到特定的主题(Topic),而订阅者可以选择订阅感兴趣的主题,接收与之相关的消息。这种模式使得设备之间可以异步通信,降低了耦合性,适用于多个设备之间的实时通信。发布者发布消息后,不需要等待订阅者的响应,从而提高了系统的响应性能。

可靠性
        MQTT支持消息的持久性传输,确保消息的可靠性,这在物联网应用中非常重要,MQTT可以通过控制可靠性级别来确保消息传递的可靠性。

安全性
        MQTT支持使用TLS/SSL进行加密通信,确保数据传输的安全性。此外,MQTT还支持用户名和密码进行认证,保护客户端和服务器之间的通信安全。

3. MQTT 协议原理

        实现MQTT协议需要:客户端和服务器端

        MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

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

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

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

4. MQTT协议中的订阅、主题、会话

订阅(Subscription)

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

会话(Session)

        每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。

主题名(Topic Name)

        连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。

主题筛选器(Topic Filter)

        一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。

负载(Payload)

        消息订阅者所具体接收的内容

 
 

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

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

相关文章

面向对象(精髓)变继承关系为组和关系

在面向对象编程中,继承关系是一种重要的关系类型,它允许一个类(子类)继承另一个类(父类)的属性和方法。然而,随着软件系统的复杂性不断增加,传统的继承关系可能会导致代码的臃肿和耦…

【国产MCU】-CH32V307-SysTick中断与延时功能实现

SysTick中断与延时功能实现 文章目录 SysTick中断与延时功能实现1、SysTick介绍2、SysTick中断使用3、SysTick实现微秒和毫秒延时功能CH32V307的RISC-V内核控制器自带的一个64位可选递增或递减的计数器,用于产生SYSTICK异常(异常号:15),可专用于实时操作系统,为系统提供“…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景:开发者A,开发者B在同一个项目协同开发,修改同一个代码文件。开发者A在Win10下,开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…

在微信小程序项目中使用mock模拟数据

之前对mockjs做了一个介绍,以及在js、vue中拦截ajax的方法,介绍是必看的,也是一些基础 这一篇讲讲在小程序中的应用 微信小程序为了让开发者更方便地开发小程序,开发者工具提供了 API Mock 的能力,可以模拟部分 API 的…

【Apache Camel】基础知识

【Apache Camel】基础知识 Apache Camel是什么Apache Camel基本概念和术语CamelContextEndpointsRoutesRouteBuilderComponentsMessageExchangeProcessorsDomain Specific Language(DSL) Apache Camel 应用执行步骤Apache Camel 示意图参考 Apache Camel…

机器学习|KNN和Kmeans

KNN和Kmeans KNN KNN-K个最近的邻居,而K是可人先预设出来的。 所谓近朱者赤,近墨者黑。 可以选取离当前最近的K个样本来作为辅助判断,因为本样本和最近的K个样本应该是处于一种相似的状态。 以下是一个苹果和梨的识别任务。 图上会出现一个未…

第十二章执行引擎

第十二章执行引擎 文章目录 第十二章执行引擎0. 前情概述1. 执行引擎的概述1.1 执行引擎的工作过程 2. Java代码编译和执行的过程什么是解释器?什么是JIT编译器?为什么说java是半编译半解释型语言 3. 机器码、指令、汇编语言机器码指令指令集汇编语言高级…

架构面试题汇总:网络协议34问(七)

码到三十五 : 个人主页 心中有诗画,指尖舞代码,目光览世界,步履越千山,人间尽值得 ! 网络协议是实现各种设备和应用程序之间顺畅通信的基石。无论是构建分布式系统、开发Web应用,还是进行网络通信&#x…

主升浪趋势票如何去做,看完这2个例子就可以终结了

我们在这个市场是否能持续赚钱不被淘汰取决于我们自身迭代速度,向市场学习本身就是向市场资金共识方向靠拢,接近客观,远离个人偏见的主观。看清这一点,你才有可能性,否则连可能性都不会有。 在上述问题中,虽…

了解华为(PVID VLAN)与思科的(Native VLAN)本征VLAN的区别并学习思科网络中二层交换机的三层结构局域网VLAN配置

一、什么是二层交换机? 二层交换机(Layer 2 Switch)是一种网络设备,主要工作在OSI模型的数据链路层(第二层),用于在局域网内部进行数据包的交换和转发。二层交换机通过学习MAC地址表&#xff0…

2024年目标检测研究进展

YOLOv9 图片来源网络 YOLO相关的研究:https://blog.csdn.net/yunxinan/article/details/103431338

Openharmony的设备开发流程 Hi3516DV300

安装VirtualBox 这里用VirtualBox 6.1.3 https://download.virtualbox.org/virtualbox/6.1.30/VirtualBox-6.1.30-148432-Win.exe 安装 安装Ubuntu镜像 Ubuntu系统要求:Ubuntu18.04~21.10版本。推荐使用20.04版本,内存16 GB及以上。 https://mirrors…