如何理解MQTT协议及协议原理

技术如何理解MQTT协议及协议原理这篇文章给大家介绍如何理解MQTT协议及协议原理,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MQTT协议MQTT协议全称是Message Queuing Tele

本文向您介绍如何理解MQTT协议及其原理。内容非常详细。有兴趣的朋友可以参考一下,希望对你有帮助。

MQTT协议

mqtt协议的全称是消息队列遥测传输,翻译为消息队列遥测传输协议。它是物联网中常用的应用层协议。它运行在TCP/IP的应用层,依赖于TCP协议,因此具有很高的可靠性。同时,它是基于TCP协议的客户端-服务器模型发布/订阅主题消息的轻量级协议,也是我们常说的收发数据。让我们初步了解一下MQTT的相关名称和功能。

MQTT最大的优势是可以用很少的代码和有限的带宽为远程设备提供实时可靠的消息服务。MQTT作为一种低开销、低带宽的即时通讯协议,广泛应用于物联网、小设备、移动应用等。

00-1010众所周知,TCP/IP参考模型可以分为四层:应用层、传输层、网络层和链路层。而TCP和UDP都位于传输层。应用层常见的协议有HTTP、FTP、SSH等。MQTT协议运行在TCP之上,属于应用层协议,因此MQTT可以在任何支持TCP/IP协议栈的地方使用。

MQTT是哪一层的协议?

MQTT协议提供了一对多的消息发布,可以减少应用的耦合。用户只需编写少量的应用程序代码,就可以发布和订阅一对多消息。该协议基于客户机-服务器模型,协议中有三个主要身份:发布者、服务器和订阅者。其中,MQTT消息的发布者和订阅者都是客户端,服务器只作为中转存在,将发布者发布的消息转发给所有订阅此主题的订阅者;发布者可以发布自己权限内的所有主题,消息发布者可以同时是订阅者,实现了生产者和消费者的解耦,发布的消息可以同时被多个订阅者订阅。

MQTT通信模型示意图如下:

如何理解MQTT协议及协议原理

Mqtt001

MQTT通信模型

向其他相关客户端发出消息。

订阅主题请求接收相关应用程序消息。

取消订阅主题请求以删除收到的应用程序消息。

终止与服务器的连接。

MQTT客户端的功能:

MQTT服务器常被称为Broker(消息代理),一般是云服务器。比如BTA三巨头的一些物联网平台,经常使用位于消息发布者和订阅者之间的MQTT协议,从而接收消息并发送给订阅者。其职能是:

接受来自客户端的网络连接请求。

接受客户端发布的应用程序消息。

处理客户的订阅和取消订阅请求。

将应用程序消息转发给符合条件的订阅客户端(包括发布者本人)。

00-1010主题是什么?MQTT服务器为每个连接的客户端(订户)添加一个标签,该标签匹配服务器中的所有订阅,服务器将消息转发给每个匹配该标签的客户端(订户)。当然,订阅者订阅相应的主题也需要权限,比如在阿里巴巴云,订阅者只能订阅同一产品下的主题,不能跨产品订阅,这样可以实现信息安全,多个订阅者可以及时收到消息。一个主题可以有多个级别,由斜杠字符分隔。例如,/test和/test/test1/test2是有效的主题。

发布者和订阅者可以以主题名称的形式发布和订阅主题,一般是UTF-8编码(英文字符串反正不会错)。例如,我们可以直接定义一个名为“测试”的主题。大多数MQTT服务器都支持动态发布/订阅主题,即当前服务器中没有主题,但是客户端可以直接向主题发布/订阅消息,这样服务器就会创建相应的主题。当然,服务器一般也会这么做。

每个客户端与服务器建立连接后,它就是一个会话。客户端和服务器之间会有状态交互。订阅基于会话。每个订阅都包含一个主题筛选器,这是一个用于标识一个或多个与订阅相关的主题的表达式。主题过滤器可以使用通配符。因此,订阅者需要指定订阅的主题名称和服务质量。订阅者可以订阅多个主题,并接收多个发布者发布的消息。同样,发布者也需要首先与服务器建立会话,并指定要发送的主题的名称和服务质量。同时,它还可以向许多不同的主题发送消息。

那么什么是服务质量呢?MQTT提供三个级别的服务质量:

QoS0:最多发送一条消息。消息发出后,接收方不会发送响应,发送方也不会。

重发消息,消息可能送达一次也可能根本没送达,这个服务质量常用在不重要的消息传递中,因为即使消息丢了也没有太大关系。

  • QoS1:最少发送一次消息(消息最少需要送达一次,也有可送达多次),QoS 1的PUBLISH报文的可变报头中包含一个报文标识符,需要PUBACK报文确认。即需要接收者返回PUBACK应答报文。

  • QoS2:这是最高等级的服务质量,消息丢失和重复都是不可接受的,只不过使用这个服务质量等级会有额外的开销,这个等级常用于支付中,因为支付是必须有且仅有一次成功,总不能没给钱或者给了多次钱吧。

  • 关于如何理解MQTT协议及协议原理就分享到这里了,希望

    内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/112498.html

    (0)

    相关推荐

    • oracle与mysql使用上的区别(oracle和mysql的区别和优缺点)

      技术oracle与mysql有哪些区别小编给大家分享一下oracle与mysql有哪些区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

      攻略 2021年12月14日
    • 抖音刷赞有什么用-抖音刷播放量网站平台

      技术抖音刷赞有什么用-抖音刷播放量网站平台抖音刷赞有什么用-抖音刷播放量网站平台
      抖音刷点赞怎么样呢,这是很多有这方面需求的小伙伴们都关心的问题。就让小编带你了解抖音1w赞多少钱吧~
      刷赞好不好,通常来说,抖音平台的算法

      测评 2021年11月13日
    • 如何搭建RISC-V编译环境与运行环境

      技术如何搭建RISC-V编译环境与运行环境如何搭建RISC-V编译环境与运行环境,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们现在芯片被

      攻略 2021年12月10日
    • 如何分析CVE-2018-6789Exim缓冲区溢出漏洞

      技术如何进行CVE-2018-6789Exim缓冲区溢出漏洞分析本篇文章为大家展示了如何进行CVE-2018-6789Exim缓冲区溢出漏洞分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你

      攻略 2021年12月20日
    • 火车怎么读,以|A开头的火车, 应该怎样读?

      技术火车怎么读,以|A开头的火车, 应该怎样读?Z-直达特快列车T-特快列车K-快速列车N-管内快速列车(和K一个意思火车怎么读,咱们普通乘客不用特意区别)L、A-临时旅客列车Y-旅游列车没有字母的四位车次普通列车详细如

      生活 2021年10月29日
    • 考研复试什么时候,研究生面试时间多长

      技术考研复试什么时候,研究生面试时间多长我是研路有我,我来回答你的问题考研复试什么时候。研究生面试一般在15分钟左右!我作为一名曾经的考研生,也是经历了面试。我当时面试的时候,大概看了一下时间,每位同学的面试时间平均在1

      生活 2021年10月25日