浅谈物联网开发最热协议—MQTT协议

简介: 浅谈物联网开发最热协议—MQTT协议

 

MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议,由 IBM 发布。

目录

MQTT是什么?

什么是发布/订阅?

MQTT属于哪一层协议?

MQTT协议通信模型

消息主题

服务质量定义

MQTT客户端的功能

MQTT服务器的功能

MQTT协议会话

MQTT协议的报文详情


Hello,大家好,我是灰小猿!

最近在在物联网相关项目的开发的时候,有用到物联网常用的通信协议--MQTT协议,刚开始对这一块的知识并不是很了解,所以在这里一边学习一边记录,有不合理的地方还希望能多多指正。

MQTT是什么?

MQTT协议全称是(Message Queuing Telemetry Transport),即消息队列遥测传输协议

是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,并且该协议构建于TCP/IP协议之上,我们知道TCP协议本身就具有高可靠性的特点,因此基于其上的MQTT协议同样也是具有高可靠、低开销的特点,之所以低开销,是以为MQTT协议传输的最小的报文也只有两个字节。

什么是发布/订阅?

我们在上面说到,MQTT协议是一种基于发布/订阅模式的轻量级通讯协议,那么什么是订阅和发布呢?

订阅&发布

订阅包含一个主题过滤器(Topic Filter)和一个最大的服务质量(Qos)等级,订阅与单个会话(Session)关联,会话可以包含多于一个的订阅,会话的每一个订阅都有一个不同的主题过滤器。

我们拿抖音平台来举个例子,我们每一个用户就都是一个客户端,而抖音就是MQTT协议中的服务器,当我们(用户一)关注某一个用户(用户二)时,这样一个关注的行为就可以理解为订阅;同时用户二也可以关注你,那么这就是相互订阅。当用户二发布作品的时候,这个作品是发布到了抖音平台,也就是我们现在的服务器,这个过程就是消息的发布。

在这里需要注意的是:用户二(客户端)发布的消息并不是直接发布给了用户一,而是发布到了抖音平台(服务器),由于用户一订阅了用户二的消息,所以抖音平台(服务器)就会向用户一推送。这就是MQTT协议订阅&发布的一个简单比喻。

image.gif编辑

MQTT属于哪一层协议?

MQTT协议是构建于TCP/IP协议之上的,同时TCP/IP参考模型可以分为四层:

应用层 传输层 网络层 链路层

image.gif编辑

而MQTT协议运行于TCP协议之上,属于应用层协议,因此只要是支持TCP/IP协议栈的地方,都可以使用MQTT协议。

MQTT协议通信模型

MQTT协议是基于<客户端-服务器>模型设计的,

主要有三种身份:发布者(publisher)、服务器(broker)、订阅者(subscriber)

同时“发布者”和“订阅者”均属于客户端的范畴。

image.gif编辑

消息主题

主题(Topic):是附加在消息上的一个标签,该标签与服务器中的所有订阅相匹配,服务器会将消息转发给与标签相匹配的每个客户端(订阅者)。

在这里主题(Topic)就可以理解为你抖音用户的“网名”,只有我们订阅了该“网名”,才能通过服务器进行数据的交互,所以在这里我们就可以将服务器理解为一个“中转枢纽”,用户一将“作品”(消息)发布到这个“中转枢纽”(服务器),之后服务器再将该作品推送给订阅了该用户一的粉丝用户二。

主题过滤器(Topic Filter):订阅中包含的一个表达式,用于表示相关的一个或多个主题,主题过滤器可以使用通配符。在这里我的理解就是存放订阅的主题的一个集合,集合中有该主题则推送消息给客户端,没有则不会推送。

服务质量定义

    1. QoS0:最多发送一次消息
    2. QoS1:最少发送一次消息(消息最少需要送达一次,也有可能送达多次)
    3. QoS2:最高等级的服务质量,有且只有一次

    MQTT协议服务质量定义

    Qos值 Bit2 Bit1 描述
    0 0 0 最多分发一次
    1 0 1 至少分发一次
    2 1 0 只分发一次

    MQTT客户端的功能

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

      MQTT服务器的功能

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

        MQTT协议会话

        客户端与服务器之间的状态交互

        一些会话的持续时长与网络连接一样,另一些可以在客户端和服务端的多个连续网络连接之间扩展。

        MQTT协议的报文详情

        报文

        描述

        流向

        固定报头

        可变报头

        负载

        CONNECT

        客户端请求与服务器端建立连接

        C->S

        1

        CONNACK

        服务器端确认建立连接

        S->C

        2

        PUBLISH

        发布消息

        C<->S

        3

        PUBACK

        收到发布消息确认(QoS1等级)

        C<->S

        4

        PUBREC

        发布消息收到(QoS2等级)

        C<->S

        5

        PUBREL

        发布消息释放(QoS2等级)

        C<->S

        6

        PUBCOMP

        发布消息完成(QoS2等级)

        C<->S

        7

        SUBSCRIBE

        订阅请求

        C->S

        8

        SUBACK

        订阅确认

        S->C

        9

        UNSUBSCRIBE

        取消订阅

        C->S

        10

        UNSUBACK

        取消订阅确认

        S->C

        11

        PING

        客户端发送PING(连接保活)命令

        C->S

        12

        PINGRSP

        PING命令回复

        S->C

        13

        DISCONNECT

        断开连接

        C->S

        14

        好了,关于MQTT协议的这些基本概念就先分享这些。有错误的地方还希望大佬能够批评改正,之后关于MQTT的相关学习也会再继续更新。

        觉得不错记得点赞关注哟!

        大灰狼期待与你一同进步!

        image.gif编辑

        相关实践学习
        快速体验阿里云云消息队列RocketMQ版
        本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
        消息队列 MNS 入门课程
        1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
        目录
        相关文章
        |
        8月前
        |
        消息中间件 安全 物联网
        海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
        易易互联科技有限公司是吉利集团旗下专注于换电生态的全资子公司,致力于打造安全、便捷、便宜的智能换电网络。公司依托吉利GBRC换电平台,基于电池共享与车辆全生命周期运营,已布局超470座换电站,覆盖40多个城市,计划2027年达2000座。面对海量设备高并发连接、高实时性要求及数据洪峰挑战,易易互联采用阿里云MQTT与RocketMQ构建高效物联网通信架构,实现稳定接入、低延迟通信与弹性处理,全面支撑其全国换电网络规模化运营与智能化升级。
        509 1
        海量接入、毫秒响应:易易互联基于 Apache RocketMQ + MQTT 构筑高可用物联网消息中枢
        |
        8月前
        |
        数据采集 传感器 监控
        Modbus 与 MQTT 协议兼容:MyEMS 的泛在能源数据采集技术实现
        MyEMS深度融合Modbus与MQTT协议,破解能源数据采集中协议碎片化、网络异构、数据孤岛等难题。通过Modbus接入95%以上工业设备,实现现场数据精准“拉取”;依托MQTT构建高效物联网传输通道,支持多源数据主动“推送”与云端集成。边缘侧采集规整,中心侧汇聚分析,形成统一、可靠、低延迟的数据流。该架构兼具高兼容性、强扩展性与低运维成本,广泛应用于工业园区、商业楼宇及集团型企业,支撑实时监控、AI分析与跨系统融合,打造泛在互联的能源数据底座,助力企业实现全面智慧能源管理。
        546 6
        |
        人工智能 物联网 Android开发
        【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
        【04】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-自定义一个设置输入小部件组件-完成所有设置setting相关的页面-优雅草卓伊凡
        562 92
        |
        数据采集 监控 网络协议
        ​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
        ​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
        1485 40
        ​MCP协议深度解析:原理、应用与物联网时代的机遇-优雅草卓伊凡
        |
        12月前
        |
        物联网
        (手把手)在华为云、阿里云搭建自己的物联网MQTT消息服务器,免费IOT平台
        本文介绍如何在阿里云搭建自己的物联网MQTT消息服务器,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
        3734 42
        |
        物联网
        如何在腾讯云等平台搭建自己的物联网MQTT服务器Broker
        物联网技术及MQTT协议被广泛应用于各种场景。本文介绍物联网MQTT服务助手下载,如何搭建自己的物联网平台,并使用 “MQTT客户端调试工具”模拟MQTT设备,接入平台进行消息收发。
        895 37
        |
        人工智能 物联网 Android开发
        【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
        【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
        630 23
        【03】优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-在lib目录新建自定义库UtilsLibrary,ComponentLibrary,CommonConstLibrary完成设置SettingsView.ets初始公共类书写-优雅草卓伊凡
        |
        11月前
        |
        监控 安全 Java
        Java 开发中基于 Spring Boot 3.2 框架集成 MQTT 5.0 协议实现消息推送与订阅功能的技术方案解析
        本文介绍基于Spring Boot 3.2集成MQTT 5.0的消息推送与订阅技术方案,涵盖核心技术栈选型(Spring Boot、Eclipse Paho、HiveMQ)、项目搭建与配置、消息发布与订阅服务实现,以及在智能家居控制系统中的应用实例。同时,详细探讨了安全增强(TLS/SSL)、性能优化(异步处理与背压控制)、测试监控及生产环境部署方案,为构建高可用、高性能的消息通信系统提供全面指导。附资源下载链接:[https://pan.quark.cn/s/14fcf913bae6](https://pan.quark.cn/s/14fcf913bae6)。
        2353 0
        |
        人工智能 前端开发 物联网
        【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
        【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
        325 0
        【05】20250416优雅草星云物联网AI智控系统从0开发鸿蒙端适配-deveco studio-增加告警中心相关卡片页面WarningCardWidget相关-增加Canvas 绘制折线图-Canvas 绘制柱状图-首页-优雅草卓伊凡
        |
        传感器 人工智能 物联网
        健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
        健康监测设备的技术革命:AI+物联网如何让你随时掌握健康数据?
        1487 19

        相关产品

      1. 物联网平台