当下流行的物联网协议MQTT简介

概述


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“至多一次”

至多一次

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

4.2“至少一次”

至少一次

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

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

4.3“只有一次”

只有一次

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的推送,确保用户收到且只会收到一次。

链接:https://www.jianshu.com/p/73d9c6668dfc

(0)

相关推荐

  • mqtt协议 学习笔记

    文章目录 1. MQTT协议介绍 2. MQTT协议特性 3. MQTT协议的通信模型 3. MQTT的主题 4. MQTT协议的连接与会话 5. MQTT 报文格式 5.1 报文类型汇总 i. 连接 ...

  • 用了那么久MQTT,这些知识点你了解吗

    来这里,还可以学习HAL库的使用哦 哈喽,小伙伴们,今天来聊一聊什么是MQTT协议,以及常用的几个术语是什么意思,有图有真相哦,欢迎阅读 1. 什么是MQTT   MQTT(MQ Telemetry ...

  • 消息推送标准协议:MQTT

    随着物联网(Internet of Things,IoT)的兴起,机器之间(Machine-to-Machine,M2M)的大规模信息沟通成为重要的课堂,之前HTTP的请求/回答(Request/Re ...

  • 说到做到!

    之前有位读者给我留言说想要了解一下什么是 MQTT 协议,顺便还把我夸了一把,有点不好意思啦. 那么读者的要求必须要满足啊,所以现在 @一下这位小姐姐,来听课啦!什么是 MQTT 协议MQTT 协议的 ...

  • MQTT QOS & Retained Message

    项目终于基本完成了,记录一下,由于客户端误设置了发布保留消息,导致服务器每次上线都会收到客户端最后一条消息,先去解读并改了QOS的设置,并没有用,然后才发现有Retained Message的设置,直 ...

  • 【乐创“协”说】万物互联时代,作为工程师你必须知道这个协议——MQTT简介

    MQTT(Message Queuing Telemetry Transport),说人话的意思就是消息队列遥测传输.早些年的PC端盛行的时候,很多工程师压根就没有听过个绕口的名词,但是随着物联网(I ...

  • 物联网协议MQTT入门篇

    原文链接:https://zhuanlan.zhihu.com/p/20888181原文作者:张琪 物联网(Internet of Things,IoT)最近曝光率越来越高.虽然HTTP是网页的事实标 ...

  • 当下流行菜

    烧椒拌牛舌 原料:牛舌1个酱汁(东古酱油100毫升.鲜露100 毫升.香醋75 毫升.鸡精10克.味精10克.蒜泥20克.烧椒200克拌匀即成) 五香卤水1锅葱花适量 制法: 1.牛舌解冻后浸泡净血水 ...

  • 当下流行“少女锁骨发”

    拥有少女感的锁骨发当下很流行,适合夏天剪,锁骨发的长度既可以披肩,又可以扎起来,炎热的夏天也可以做好看的造型,如果你的头发正在蓄长发,这样的锁骨发型一定要收藏起来.好看又有少女感,减龄气质不显老,染个 ...

  • 当下流行的厨房样式,收好

    厨房是家中烟火气聚集地,同时也是制造温暖的地方.然而厨房在很多人眼中,都是凌乱和油腻的样子,感觉实用性与美观性永远不能两全.其实只要会装修,就能拥有一个美好的厨房!迅速提升一个家庭的气质和品味. 厨房 ...

  • 当下流行的碳酸鸡尾酒,海波

    这款鸡尾酒也被称为"威土忌苏打",也就是用成士忌和苏打水调制面成的鸡尾酒.根据威士忌的种类不同,分为"苏格兰威士忌海波"和"波顿威士忌海波" ...

  • 肝脏秘密揭露:当下流行的肝脏清洗,真的能让你排出“肝结石”吗?

    来,让我们洗涤我们的灵魂 打开你的心房 让祂住进来. Medical Medium Blog 肝脏秘密揭露 安东尼·威廉Anthony William 如果你曾经研究过治疗症状或疾病的不同方法,尝试过 ...

  • 越来越多人卫生间不做斜坡了,当下流行这么做,50年不漏水!

    买房是很多人一辈子中最为重要的事情之一,其实不单单是买房十分关键,装修的重要性也不遑多让,毕竟装修的时候没有弄好的话,再好的房子也会被糟蹋.今天我们这里呢,就来讲讲装修的这件事! 卫生间是我们每天都需 ...