如何理解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)

    相关推荐

    • React5种非常流行的状态管理库是什么

      技术React5种非常流行的状态管理库是什么本篇内容主要讲解“React 5种非常流行的状态管理库是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React 5种非常流行

      攻略 2021年10月26日
    • 很怎么读,很高兴见到你用英文怎么读

      技术很怎么读,很高兴见到你用英文怎么读见到你很高兴的英文翻译为nice to meet you.词汇分析音标:英[nais tu: mi:t ju:] 美[naɪs tu mit ju] 释义:很高兴见到你拓

      生活 2021年10月21日
    • Golang中配置信息处理框架Viper有什么用

      技术Golang中配置信息处理框架Viper有什么用这篇文章主要介绍Golang中配置信息处理框架Viper有什么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Viper项目地址:https:/

      攻略 2021年11月18日
    • android怎么新建activity(android activity怎么启动步骤)

      技术Android Activity怎么启动这篇文章主要介绍“Android Activity怎么启动”,在日常操作中,相信很多人在Android Activity怎么启动问题上存在疑惑,小编查阅了各式资料,整理出

      攻略 2021年12月18日
    • Python怎么实现禅道提交bug

      技术Python怎么实现禅道提交bug这篇文章主要讲解了“Python怎么实现禅道提交bug”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python怎么实现禅道提交bu

      攻略 2021年11月29日
    • VS2017如何配置OpenCV通用属性

      技术VS2017如何配置OpenCV通用属性这篇文章将为大家详细讲解有关VS2017如何配置OpenCV通用属性,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在VS环境下配置OPENC

      攻略 2021年11月21日