MQTT 协议基础

iotforall 20230611

  • 物联网
  • MQTT协议
  • 消息传输
图示:© IoT For All --> 我们将讨论MQTT协议的基本内容和如何开始使用MQTT协议,并提供代码示例。物联网(IoT)和MQTT的初学者可以利用这些信息来理解MQTT相关概念,并快速开始开发MQTT服务和应用。MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布-订阅的消息协议,设计用于资源受限的设备和低带宽、高延迟或不可靠的网络。它在物联网(IoT)应用中被广泛使用,为传感器、执行器和其他设备提供高效的通信。“MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布-订阅的消息协议,设计用于资源受限的设备和低带宽、高延迟或不可靠的网络。” 为什么MQTT是物联网的最佳协议?MQTT之所以成为最佳的物联网协议之一,是因为它具有独特功能和能力,能够满足物联网系统特定的需求。一些主要原因包括:轻量级:物联网设备通常在处理能力、内存和能源消耗方面受限。MQTT的最小开销和小数据包大小使其非常适合这些设备,因为它消耗的资源更少,即使在能力有限的情况下也能实现高效通信。可靠:物联网网络可能会遇到高延迟或不稳定的连接。MQTT对不同服务质量(QoS)等级的支持、会话感知和持久连接,确保了即使在恶劣条件下也能实现可靠的消息传递,这使得MQTT非常适合物联网应用。安全通信:在物联网网络中,安全性至关重要,因为这些网络经常传输敏感数据。MQTT支持传输层安全(TLS)和安全套接字层(SSL)加密,确保传输过程中的数据保密性。此外,它还通过用户名/密码凭证或客户端证书提供身份验证和授权机制,确保对网络和资源的访问得到保障。双向通信:MQTT的发布-订阅模式允许设备之间进行无缝双向通信。客户端既可以发布消息到主题,也可以订阅以接收特定主题的消息,使得在各种物联网生态系统中能够有效交换数据,而无需设备之间直接耦合。这种模式还简化了新设备的集成,确保了轻松的可扩展性。持续的状态会话:MQTT允许客户端与代理保持状态会话,使系统即使在断开连接后也能记住订阅和未交付的消息。客户端还可以在连接时指定一个保持活动的时间间隔,该时间间隔会促使代理定期检查连接状态。如果连接丢失,代理会存储未发送的消息(具体取决于QoS等级),并在客户端重新连接时尝试发送这些消息。这一功能确保了通信的可靠性,并减少了因间歇性连接而造成的数据丢失风险。大规模物联网设备支持:物联网系统通常涉及大量设备,因此需要一种能够处理大规模部署的协议。MQTT的轻量级特性、低带宽消耗和高效的资源利用,使其非常适合大规模物联网应用。发布-订阅模式使得MQTT能够有效扩展,因为它解耦了发送方和接收方,减少了网络流量和资源使用。此外,该协议对不同QoS等级的支持允许根据应用程序的需求定制消息传递,确保在各种场景下的最佳性能。语言支持:物联网系统通常包括使用各种编程语言开发的设备和应用。MQTT广泛的语言支持使其能够轻松集成到多个平台和技术中,促进各种物联网生态系统中无缝的通信和互操作性。MQTT是如何工作的?要了解MQTT是如何工作的,您需要首先掌握每个概念的基本知识:MQTT客户端、MQTT代理、发布-订阅模式、主题和QoS:MQTT客户端:任何运行MQTT客户端库的应用程序或设备都是MQTT客户端。例如,使用MQTT的即时通讯应用是一个客户端,各种使用MQTT报告数据的传感器也是一个客户端,各种MQTT测试工具也是客户端。MQTT代理:MQTT代理处理客户端的连接、断开连接、订阅和退订请求,并路由消息。一个强大的MQTT代理可以支持大量的连接和百万级的消息吞吐量,帮助物联网服务提供商专注于业务,并快速创建可靠的MQTT应用。发布-订阅模式:发布-订阅模式不同于客户端-服务器模式,因为它将发送消息的客户端(发布者)与接收消息的客户端(订阅者)分离开来。发布者和订阅者不需要建立直接连接,MQTT代理负责路由和分发所有消息。下图显示了MQTT的发布/订阅过程。温度传感器作为客户端连接到MQTT服务器,并将温度数据发布到一个主题(例如,Temperature),服务器接收消息并将其转发给订阅Temperature主题的客户端。EMQ Technologies Inc.主题:MQTT协议根据主题路由消息。主题通过斜线/区分层次,这类似于URL路径,例如:chat/room/1 sensor/10/temperature sensor/+/temperature MQTT主题支持以下通配符:+和#。+:表示单级通配符,例如a/+匹配a/x或a/y。#:表示多级通配符,例如a/#匹配a/x,a/b/c/d。更多关于MQTT主题的信息,请查阅博客《理解MQTT主题与通配符的实例》。服务质量(QoS):MQTT提供三种不同的服务质量等级,并在不同的网络环境中保证消息传递的可靠性。QoS 0:消息最多传递一次。如果当前客户端不可用,则会丢失消息。QoS 1:消息至少传递一次。QoS 2:消息仅传递一次。MQTT的工作流程:既然我们已经了解了MQTT的基本知识,现在来看看典型的工作流程是怎样的:客户端使用TCP/IP与代理建立连接,可以选择使用TLS/SSL加密以实现安全通信。客户端提供身份验证凭据,并指定一个干净会话或持久会话。客户端可以选择向特定主题发布消息或订阅主题以接收消息。发布消息的客户端将消息发送到代理,而订阅消息的客户端则表示对特定主题的消息感兴趣。代理接收已发布的消息,并将其转发给所有订阅了相关主题的客户端。它确保根据指定的服务质量(QoS)等级实现可靠的消息传递,并根据会话类型管理已断开连接客户端的消息存储。连接性 物联网平台 网络与协议 --> 连接性 物联网平台 网络与协议

查看全文

点赞

iotforall

作者最近更新

  • How to Implement Device Convergence for Sigfox & LoRaWAN
    iotforall
    2023-12-22
  • Edge and IoT Predictions For 2024
    iotforall
    2023-12-22
  • IoT Device Security Challenges: Calling for Consumer Vigilance
    iotforall
    2023-12-20

期刊订阅

相关推荐

  • 浅谈我国医疗智慧物联网应用现状及未来发展

    2018-12-03

  • 从MEMS专利数量分析我国MEMS传感器产业现状

    2019-03-28

  • 诺基亚推出基于区块链的智慧城市传感系统

    2018-12-06

  • 北斗首次发布民用领域物联网无线数据模块产品

    2018-12-07

评论0条评论

×
私信给iotforall

点击打开传感搜小程序 - 速览海量产品,精准对接供需

  • 收藏

  • 评论

  • 点赞

  • 分享

收藏文章×

已选择0个收藏夹

新建收藏夹
完成
创建收藏夹 ×
取消 保存

1.点击右上角

2.分享到“朋友圈”或“发送给好友”

×

微信扫一扫,分享到朋友圈

推荐使用浏览器内置分享功能

×

关注微信订阅号

关注微信订阅号,了解更多传感器动态

  • #{faceHtml}

    #{user_name}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 查看评论 回复

    共#{comment_count}条评论

    加载更多

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} #{reback} 回复

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 回复

  • 关闭
      广告