MQTT 协议学习:001-有关概念入门

Posted schips

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MQTT 协议学习:001-有关概念入门相关的知识,希望对你有一定的参考价值。

背景

MQTT 协议是物联网中常见的协议之一,"轻量级物联网消息推送协议"

概念

MQTT是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用,是专为受限设备和低带宽、高延迟或不可靠的网络而设计。这些原则也使该协议成为新兴的“机器到机器”(M2M)或物联网(IoT)世界的连接设备,以及带宽和电池功率非常高的移动应用的理想选择。例如,它已被用于通过卫星链路与代理通信的传感器、与医疗服务提供者的拨号连接,以及一系列家庭自动化和小型设备场景。它也是移动应用的理想选择,因为它体积小,功耗低,数据包最小,并且可以有效地将信息分配给一个或多个接收器。

角色

MQTT有三个角色,包括服务器代理、订阅者和发布者。

  • 1)启动服务器代理。
  • 2)订阅者向服务器代理订阅相关主题。
  • 3)发布者向服务器代理发布主题信息。
  • 4)服务器代理想所有订阅该主题的订阅者推送消息。

MQTT有C/C++语言和JAVA包实现。需要明确的是,MQTT更适用于设备终端和手机APP socket通信,而不能支持浏览器使用。如果要支持微信浏览器应用,还需要增加类似WebsocketServlet技术给浏览器提供支持,这时MQTT以JS接口进行封装,并被调用完成消息推送。

特点

  • 开放消息协议,简单易实现
  • 发布订阅模式,一对多消息发布
  • 基于TCP/IP网络连接,提供有序,无损,双向连接。
  • 1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。
  • 消息QoS支持,可靠传输保证

应用

MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。

  • 物联网M2M通信,物联网大数据采集
  • android消息推送,WEB消息推送
  • 移动即时消息,例如Facebook Messenger
  • 智能硬件、智能家具、智能电器
  • 车联网通信,电动车站桩采集
  • 智慧城市、远程医疗、远程教育
  • 电力、石油与能源等行业市场

最新消息

MQTT v5.0现在成为了OASIS官方标准

OASIS现在已经发布了官方的MQTT v5.0标准 - 这对于已经为物联网(IoT)所用的消息传输协议来说,这是一个改进和功能的巨大飞跃。基于早期的v3.1.1标准,它具有重要的更新,同时最大限度地减少与现有版本的不兼容性。

新版本的亮点包括:

  • 更好的错误报告 - 特别是,在发布的响应中添加了原因代码(PUBACK / PUBREC)。MQTT起源于输油管道沿线的传感器等使用案例 - 如果它们的消息发布未能传输,则传感器将不采取任何措施。然而,MQTT的用例现在要广泛得多,如果数据没有成功传输,手机上的应用程序可能会想要警告用户。返回代码现在出现在所有确认中(以及包含人类可读错误诊断的可选原因字符串)。
  • 共享订阅 - 如果订阅上的消息速率很高,则可以使用共享订阅在多个接收客户端之间对消息进行负载平衡。
  • 消息属性 - 消息标题中的元数据。这些用于实现此列表中的其他功能,但也允许用户定义的属性,例如通过告知接收方使用哪个密钥来解密消息内容来协助消息加密
  • 消息过期 - 如果消息无法在用户定义的时间段内传递,则可以选择丢弃消息。
  • 会话到期 - 如果客户端未在用户定义的时间段内连接,则可以丢弃状态(例如,订阅和缓冲的消息)而无需进行清理。
  • 主题别名 - 允许将消息中的主题字符串替换为单个数字,从而减少发布者重复使用相同主题时需要传输的字节数。
  • Will Delay - 如果客户端断开连接的时间超过用户定义的时间段, 则允许发布消息。允许有关重要客户端应用程序中断的通知, 而不会被误报淹没。
  • 允许的功能发现 - 在连接开始时,可以传输最大数据包大小和(QoS> 0)消息的数量限制,以通知客户端允许执行的操作。 新功能的完整列表见标准的附录C

以上是关于MQTT 协议学习:001-有关概念入门的主要内容,如果未能解决你的问题,请参考以下文章

MQTT 入门介绍

MQTT--入门

MQTT学习笔记

MQTT 入门介绍

MQTT协议入门

MQTT协议入门