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

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

3天内不再提示

物联网协议MQTT协议的实现

汽车玩家 来源:IT知识课堂 作者:IT知识课堂 2020-05-05 23:07 次阅读

概述

MQTT是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器之间通信的桥梁。

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议。有以下特点:

使用发布/订阅消息模式,提供一对多的消息发布

使用TCP/IP提供网络连接

小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量,传输的内容最大为256MB。

使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

1.MQTT协议实现方式

MQTT系统由与服务器通信的客户端组成,通常称服务器为“代理Broker”。客户可以是信息发布者Publish或订阅者Subscribe。每个客户端都可以连接到代理。

信息按主题层次结构组织。当发布者具有要分发的新数据时,它会将包含数据的控制消息发送到连接的代理。然后,代理将信息分发给已订阅该主题的任何客户端。发布者不需要有关于订阅者数量或位置的任何数据,而订阅者又不必配置有关发布者的任何数据。

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分: (1)Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload); (2)payload,可以理解为消息的内容,是指订阅者具体要使用的内容。

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

2.1订阅(Subscription)

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

2.2会话(Session)

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

2.3主题名(Topic Name)

连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。 系统主题:通过定义$SYS开头的主题可以查看一些系统信息,如客户端连接数量等, 详细介绍:https://github.com/mqtt/mqtt.github.io/wiki/SYS-Topics

2.4主题筛选器(Topic Filter)

一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。 多级匹配符 # 单级匹配符 + 更多主题讨论,请移步github wiki https://github.com/mqtt/mqtt.github.io/wiki/topic_format

2.5负载(Payload)

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

3.保留消息和最后遗嘱

保留消息 Retained Messages

MQTT中,无论是发布还是订阅都不会有任何触发事件。 1个Topic只有唯一的retain消息,Broker会保存每个Topic的最后一条retain消息。 发布消息时把retain设置为true,即为保留信息。每个Client订阅Topic后会立即读取到retain消息。如果需要删除retain消息,可以发布一个空的retain消息,因为每个新的retain消息都会覆盖最后一个retain消息。

最后遗嘱 Last Will & Testament

MQTT本身就是为信号不稳定的网络设计的,所以难免一些客户端会无故的和Broker断开连接。 当客户端连接到Broker时,可以指定LWT,Broker会定期检测客户端是否有异常。 当客户端异常掉线时,Broker就往连接时指定的topic里推送当时指定的LWT消息。

4.消息服务质量

有三种消息发布服务质量qos(Quality of Service):

4.1“至多一次”

物联网协议MQTT协议的实现

至多一次

消息发布完全依赖底层TCP/IP网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

4.2“至少一次”

物联网协议MQTT协议的实现

至少一次

PUBACK消息是对QoS级别为1的PUBLISH消息的响应.PUBACK消息由服务器发送以响应来自发布端的PUBLISH消息,订阅端也会响应来自服务器的PUBLISH消息。当发布端收到PUBACK消息时,它会丢弃原始消息,因为它也被服务器接收(并记录)。

如果一定时间内,发布端或服务器没有收到PUBACK消息,则会进行重发。这种方式虽然确保了消息到达,但消息重复可能会发生。

4.3“只有一次”

物联网协议MQTT协议的实现

只有一次

PUBREC消息是对QoS级别为2的PUBLISH消息的响应。它是QoS级别2协议流的第二个消息。 PUBREC消息由服务器响应来自发布端的PUBLISH消息,或订阅端响应来自服务器的PUBLISH消息。发布端或服务器收到PUBREC消息时,会响应PUBREL消息。

PUBREL消息是从发布端对PUBREC的响应,或从服务器对订阅端PUBREC消息的响应。 这是QoS 2协议流中第三个消息。当服务器从发布者收到PUBREL消息时,服务器会将PUBLISH消息发送到订阅端,并发送PUBCOMP消息到发布端。 当订阅端收到来自服务器的消息PUBREL时,使得消息可用于应用程序并将PUBCOMP消息发送到服务器。

PUBCOMP消息是服务器对来自发布端的PUBREL消息的响应,或订阅者对来自服务器的PUBREL消息的响应。 它是QoS 2协议流程中的第四个也是最后一个消息。当发布端收到PUBCOMP消息时,它会丢弃原始消息,因为它已经将消息发给了服务器。

在一些要求比较严格的计费系统中,可以使用此级别。在计费系统中,消息重复或丢失会导致不正确的结果。这种最高质量的消息发布服务还可以用于即时通讯类的APP的推送,确保用户收到且只会收到一次。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2900

    文章

    44052

    浏览量

    370094
  • MQTT
    +关注

    关注

    5

    文章

    647

    浏览量

    22392
收藏 人收藏

    评论

    相关推荐

    联网行业中MQTT通信协议详解以及使用

    联网、小型设备、移动应用等方面有较广泛的应用。 二 MQTT协议特点 MQTT是一个基于 客户端-服务器 的消息发布/订阅传输
    的头像 发表于 09-20 17:08 991次阅读
    <b class='flag-5'>物</b><b class='flag-5'>联网</b>行业中<b class='flag-5'>MQTT</b>通信<b class='flag-5'>协议</b>详解以及使用

    MQTT协议网关的工作原理及功能特性

    联网的快速发展中,MQTT协议网关作为连接物联网设备与消息代理服务器的重要桥梁,扮演着不可或缺的角色。
    的头像 发表于 09-18 17:00 336次阅读
    <b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>网关的工作原理及功能特性

    钡铼协议网关轻松实现Modbus转MQTT协议

    Modbus是一种在工业自动化领域广泛使用的通信协议,以其简单性和可靠性而著称。然而,随着联网技术的兴起,传统的Modbus协议需要与通信协议
    的头像 发表于 07-23 15:51 281次阅读
    钡铼<b class='flag-5'>协议</b>网关轻松<b class='flag-5'>实现</b>Modbus转<b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>

    MQTT联网平台是什么

    。这种平台允许设备通过MQTT协议与其他设备及云端服务进行通信,实现数据的上传和下载,从而支持各种联网应用和服务。
    的头像 发表于 07-18 14:22 474次阅读

    一文了解联网通信协议MQTT如何助力无线模块广泛连接

    引言:随着联网技术的飞速发展,无线模块在连接各种智能设备、实现数据交互中扮演着至关重要的角色。为了有效满 足联网通信的多样化需求,一种轻
    的头像 发表于 06-07 16:10 975次阅读
    一文了解<b class='flag-5'>物</b><b class='flag-5'>联网通信协议</b>之<b class='flag-5'>MQTT</b>如何助力无线模块广泛连接

    MQTT联网平台是什么?MQTT联网平台的功能

    ,易于实现,因此广泛应用于受限的环境,如机器与机器的通信(M2M)以及物联网环境(IoT)。 MQTT联网平台通过提供一种标准化的
    的头像 发表于 04-01 10:20 647次阅读

    mqtt协议和tcp协议区别

    带宽和高延迟的网络环境,尤其在联网环境中表现优秀。而TCP协议是面向连接的、可靠的、基于字节流的传输层通信协议,主要用于互联网和局域网中的
    的头像 发表于 04-01 09:15 1513次阅读

    MQTT和Modbus的联网网关协议的区别分析

    MQTT和Modbus的联网网关协议区别分析 MQTT(Message Queuing Telemetry Transport)与Modbus是两种广泛应用在
    的头像 发表于 03-18 16:50 723次阅读
    <b class='flag-5'>MQTT</b>和Modbus的<b class='flag-5'>物</b><b class='flag-5'>联网网关协议</b>的区别分析

    MQTT协议网关解决方案设计与实施

    的主要功能包括协议转换、消息过滤、安全认证、负载均衡等,以确保消息的可靠传输和系统的稳定运行。随着联网技术的快速发展,MQTT协议作为一种
    的头像 发表于 03-11 14:07 449次阅读

    MQTT联网平台是什么?MQTT联网平台的功能有哪些

    ,易于实现,因此广泛应用于受限的环境,如机器与机器的通信(M2M)以及物联网环境(IoT)。 MQTT联网平台通过提供一种标准化的
    的头像 发表于 01-24 09:23 1067次阅读

    lwm2m协议MQTT协议有什么区别?怎么选择?哪个更适合联网

    LwM2M(Lightweight M2M)和MQTT(Message Queuing Telemetry Transport)是两种不同的通信协议,它们在联网领域有着不同的应用和特
    的头像 发表于 01-07 10:20 638次阅读

    MQTT和Modbus协议的区别

    两种联网补充协议:用于短距离设备连接的本地协议 Modbus 以及支持联网进行全局通信的可扩
    的头像 发表于 12-08 15:21 2532次阅读
    <b class='flag-5'>MQTT</b>和Modbus<b class='flag-5'>协议</b>的区别

    联网中的MQTT协议概述

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

    工业智能网关实现MQTT协议联网平台的数据通信

    随着工业联网技术的不断发展,越来越多的设备和系统需要实现数据共享。MQTT是一种基于发布/订阅模式的轻量级消息传输协议,在
    的头像 发表于 11-17 13:38 515次阅读
    工业智能网关<b class='flag-5'>实现</b><b class='flag-5'>MQTT</b><b class='flag-5'>协议</b>与<b class='flag-5'>物</b><b class='flag-5'>联网</b>平台的数据通信

    如何实现MQTT协议数据传输?

    如何实现MQTT协议数据传输? 随着联网技术的不断发展,越来越多的设备和应用需要实现互联互通。
    的头像 发表于 11-15 17:23 1084次阅读