0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MQTT协议简介及协议原理

汽车电子技术 来源:物联网IoT开发 作者: 杰杰mcu 2023-02-28 16:16 次阅读

MQTT协议简介

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

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

MQTT是哪一层的协议?

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

MQTT通信模型

MQTT 协议提供一对多的消息发布,可以降低应用程序的耦合性,用户只需要编写极少量的应用代码就能完成一对多的消息发布与订阅,该协议是基于<客户端-服务器>模型,在协议中主要有三种身份:发布者(Publisher)、服务器(Broker)以及订阅者(Subscriber)。其中,MQTT消息的发布者和订阅者都是客户端,服务器只是作为一个中转的存在,将发布者发布的消息进行转发给所有订阅该主题的订阅者;发布者可以发布在其权限之内的所有主题,并且消息发布者可以同时是订阅者,实现了生产者与消费者的脱耦,发布的消息可以同时被多个订阅者订阅。

MQTT通信模型示意图如下:

图片

mqtt001

MQTT客户端的功能:

  1. 发布消息给其它相关的客户端。
  2. 订阅主题请求接收相关的应用消息。
  3. 取消订阅主题请求移除接收应用消息。
  4. 从服务端终止连接。

MQTT客户服务器功能:

MQTT 服务器常被称为 Broker(消息代理),它一般为云服务器,比如BTA三巨头的一些物联网平台就是常使用MQTT协议,它是位于消息发布者和订阅者之间,以便用于接收消息并发送到订阅者之中,它的功能有:

  1. 接受来自客户端的网络连接请求。
  2. 接受客户端发布的应用消息。
  3. 处理客户端的订阅和取消订阅请求。
  4. 转发应用消息给符合条件的已订阅客户端(包括发布者自身)。

消息主题与服务质量

什么是主题?MQTT服务器为每个连接的客户端(订阅者)添加一个标签,该标签与服务器中的所有订阅相匹配,服务器会将消息转发给与标签相匹配的每个客户端(订阅者),当然订阅者也是需要有权限才能订阅对应的主题,比如像阿里云中的,订阅者只能订阅同一个产品下的主题,而不能跨产品订阅,这样子的处理就能达到信息的安全性以及多个订阅者能及时收到消息。一个主题可以有多个级别,各个级别之间用斜杠字符分隔,例如/test 和 /test/test1/test2都 是有效的主题。

发布者与订阅者可以通过主题名字,一般为UTF-8编码(反正用英文字符串就不会错)的形式发布和订阅主题,比如我们可以直接定义一个名字为“test”的主题,绝大多数的MQTT服务器支持动态发布/订阅主题,即当前服务器中没有某个主题,但是客户端直接可以向该主题发布/订阅消息,这样子服务器就会创建对应的主题,当然,服务器中一般也会默认提供多个系统主题,所有连接的客户端均可订阅。

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

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

  1. QoS0:最多发送一次消息,在消息发送出去后,接收者不会发送回应,发送者也不会重发消息,消息可能送达一次也可能根本没送达,这个服务质量常用在不重要的消息传递中,因为即使消息丢了也没有太大关系。
  2. QoS1:最少发送一次消息(消息最少需要送达一次,也有可送达多次),QoS 1的PUBLISH报文的可变报头中包含一个报文标识符,需要PUBACK报文确认。即需要接收者返回PUBACK应答报文。
  3. QoS2:这是最高等级的服务质量,消息丢失和重复都是不可接受的,只不过使用这个服务质量等级会有额外的开销,这个等级常用于支付中,因为支付是必须有且仅有一次成功,总不能没给钱或者给了多次钱吧。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2869

    文章

    41622

    浏览量

    358380
  • MQTT
    +关注

    关注

    5

    文章

    537

    浏览量

    21975
  • 消息队列
    +关注

    关注

    0

    文章

    31

    浏览量

    2921
收藏 人收藏

    评论

    相关推荐

    MQTT 协议 开发入门

    ,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。
    发表于 11-07 15:51

    MQTT协议介绍与移植笔记

    # 硬件智能之 MQTT协议介绍与移植笔记(一)##MQTT是什么?MQTT(MessageQueuing Telemetry Transport Protocol)即全称消息队列遥感
    发表于 08-20 07:08

    MQTT是什么?MQTT协议的特点有哪些

    MQTT是什么?MQTT协议的特点有哪些?MQTT协议有几种消息发布服务质量啊?
    发表于 09-29 07:43

    MQTT协议的相关资料推荐

    讲到物联网,就不得不提耳熟能详的MQTT协议,作为当下被物联网领域广范围应用的标准协议,这一诞生于IBM实验室的“古老”产物(第一个版本诞生于1999年)已作为ISO国际标准越来越多的被广大应用商所
    发表于 12-13 06:42

    MQTT协议的相关资料分享

    前言搞智能家居就不得不说到网络通信,因为我们需要通过各种终端去控制我们的智能家居设备,所以网络通信这方面是必备的.而在市面上比较流行的网络通讯协议就是MQTT通信协议.今天我们就简单聊聊如何什么叫
    发表于 01-20 07:11

    玩转mqtt协议的方法

    一过完年即将陷入一场恶战之中,可能无暇在玩这么多东西了,趁着过年把之前一直想搞的mqtt协议给玩一玩 。简单说一些mqtt协议MQTT(M
    发表于 02-16 06:48

    mqtt-v3.1.1版协议

    mqtt-v3.1.1版协议,英文版,时间2014.10.29,物联网通信协议MQTT
    发表于 10-29 11:22 0次下载

    小凌派RK2206开发板:实现基于OpenHarmony的本地MQTT协议

           一、MQTT协议简介 MQTT(消息队列遥测传输)是一个基于客户端-服务器的消息发布/订阅传输协议,是ISO标准(ISO/IE
    的头像 发表于 05-27 09:33 3852次阅读
    小凌派RK2206开发板:实现基于OpenHarmony的本地<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

    MQTT 5协议你知道多少?

    MQTT协议是当今世界上最流行、接受度最高的物联网协议。自推出以来,MQTT协议在各行业应用广泛。本文带大家了解
    的头像 发表于 02-23 13:14 588次阅读

    MQTT 5协议中的基础更改(二)

    上期文章中给大家介绍了MQTT 5协议中基础更改的信息和CONNACK返回码,本篇文章我们继续介绍MQTT 5协议中其他新功能的细节。
    的头像 发表于 05-16 10:46 356次阅读
    <b class='flag-5'>MQTT</b> 5<b class='flag-5'>协议</b>中的基础更改(二)

    虹科干货 | MQTT 5协议你知道多少?

    虹科IIoTMQTT5协议你知道多少?虹科干货01MQTT5简介MQTT协议是当今世界上最流行、接受度最高的物联网
    的头像 发表于 03-29 15:44 611次阅读
    虹科干货 | <b class='flag-5'>MQTT</b> 5<b class='flag-5'>协议</b>你知道多少?

    智联物联分享之物联网协议MQTT简述,MQTT协议特点

    )基于客户端/服务器的信息发布/订阅的物联网常用传输协议。1999年由开发商IBM发布,MQTT协议是轻量、简单、开放和易于实现的,这些特点也使得MQTT
    的头像 发表于 03-28 18:10 792次阅读
    智联物联分享之物联网<b class='flag-5'>协议</b><b class='flag-5'>MQTT</b>简述,<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>特点

    虹科干货 | MQTT 5协议中的基础更改(一)

    虹科IIoTMQTT5协议中的基础更改(一)虹科干货01协议的基础性变化MQTT5是对现有协议规范的重大更新,新版本协议具有以下特征:轻量级
    的头像 发表于 04-21 09:51 330次阅读
    虹科干货 | <b class='flag-5'>MQTT</b> 5<b class='flag-5'>协议</b>中的基础更改(一)

    物联网中的MQTT协议概述

    MQTT协议已经成了物联网通信中的一个热词,今天我们一起来学习一下关于MQTT协议的一些知识。
    的头像 发表于 11-25 14:09 877次阅读

    mqtt协议和tcp协议区别

    MQTT协议和TCP协议在设计和应用上存在以下主要区别: 1. 起源与设计:MQTT协议诞生于1999年互联网初期,而TCP
    的头像 发表于 04-01 09:15 219次阅读