【物联网协议】MQTT

这篇具有很好参考价值的文章主要介绍了【物联网协议】MQTT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MQTT协议

MQTT是一种基于发布/订阅模式的协议,其中客户端(称为发布者)向主题发布消息,并允许其他客户端(称为订阅者)从这些主题订阅消息。MQTT支持多个QoS级别以及最后遗愿消息(LWT)等高级特性。

MQTT客户端

MQTT客户端通常需要与MQTT代理服务器进行通信以发布或订阅消息。它们可以运行在各种设备上,例如嵌入式系统、移动设备、桌面计算机等。由于MQTT是一种轻量级协议,因此它可以在带宽受限的环境中非常有效地工作。

MQTT代理

MQTT代理也称为MQTT服务器,负责处理所有客户端之间的消息传递。它允许客户端连接,并将接收到的消息路由到相应的订阅客户端。MQTT代理还可以执行其他重要任务,例如认证和授权、故障转移、持久订阅等。

MQTT主题

MQTT主题是消息发布和订阅的目标,它类似于电子邮件中的收件人地址。主题使用斜杠(/)进行分层,例如“devices/sensor1/temperature”。订阅者可以根据需要匹配相应的主题以接收所需的消息。

MQTT QoS级别

MQTT支持三个QoS(服务质量)级别:0,1和2。QoS 0表示消息最多发送一次,可能丢失或重复;QoS 1保证消息至少发送一次,并且始终按顺序传递;QoS 2则提供最高级别的可靠性,确保恰好一次交付,并且严格按照顺序传递。

最后遗愿消息

最后遗愿消息是一种特殊类型的消息,在客户端非正常断开连接时将自动发布。它通常用于指示某个设备已经下线或无法响应。

以上是MQTT协议的一些详细信息及其相关概念。

MQTT控制报文的类型

请求类型 类型名称 英文类型名 请求方向
0 保留 Reserved
1 连接 CONNECT 客户端到服务器
2 连接确认 CONNACK 服务器到客户端
3 发布 PUBLISH 两个方向都允许
4 发布确认 PUBACK 两个方向都允许
5 发布重传 PUBREC 两个方向都允许
6 发布完成 PUBREL 两个方向都允许
7 发布释放 PUBCOMP 两个方向都允许
8 订阅 SUBSCRIBE 客户端到服务器
9 订阅确认 SUBACK 服务器到客户端
10 取消订阅 UNSUBSCRIBE 客户端到服务器
11 取消订阅确认 UNSUBACK 服务器到客户端
12 心跳请求 PINGREQ 客户端到服务器
13 心跳请求确认 PINGRESP 服务器到客户端
14 断开连接 DISCONNECT 客户端到服务器
15 保留 Reserved

MQTT协议的connectAck是MQTT客户端连接建立后,MQTT代理(服务器)回复给客户端的确认消息。以下是MQTT connectAck的响应消息包含的信息:

MQTT connectAck

当MQTT客户端成功连接到MQTT代理时,MQTT代理(服务器)会回复一个“connectAck”消息,用于确认连接是否成功建立。connectAck消息通常包含以下内容:

Return Code

Return code表示MQTT代理对于客户端请求连接的响应状态码。它用于表示连接成功或失败,并提供有关发生错误的更多细节。不同的返回码可以表示不同类型的错误,例如拒绝未授权的访问等。
以下是相应的表格和代码:

返回码 响应
0 连接接受
1 连接拒绝,不可接受的协议版本
2 连接拒绝,标识符拒绝
3 连接拒绝,服务器不可用
4 连接拒绝,错误的用户名和密码
5 连接拒绝,未授权

Connect Flags

Connect flags是由MQTT客户端在连接请求消息中发送的标志位。它允许指定MQTT连接中使用的一些参数,例如清空保留消息、使用安全套接字层等。

Keep Alive

Keep alive指定了一个时间间隔,在该时间间隔内,MQTT代理将检查客户端是否仍然在线。如果MQTT代理没有收到来自客户端的心跳消息,则认为客户端已经掉线,会主动断开客户端连接。

MQTT心跳包机制

MQTT协议提供了心跳包机制,用于确认连接是否打开,并且broker和客户端都连接上了对方。这种机制使得客户端能够设定一定时间间隔,并根据此间隔定期地向broker发送消息。心跳时间是broker和客户端所能接受的最长通信周期。

心跳周期

心跳机制的最长周期是18小时12分15秒。如果心跳周期为0,则心跳机制将无效。

发送PINGREQ报文

当没有任何其他控制报文从客户端发给服务端时,客户端可以通过发送PINGREQ报文告知服务端它仍然活着。PINGREQ报文用于以下目的:

  • 在客户端未发送任何其他控制报文时,告知服务端客户端还处于活跃状态。
  • 请求服务端发送响应来确认自己仍然活着。
  • 通过使用网络来确认网络连接是否已断开。

这些措施有助于保持客户端与MQTT Broker之间的可靠通信,并防止因某些原因导致连接的意外关闭。

Payload

Payload包含与MQTT连接相关的其他元数据,例如质量保证级别,提供的最后愿望消息等。

以上是MQTT connectAck的响应消息包含的信息。它提供了有关与MQTT连接相关的各种信息和参数。了解connectAck消息可以帮助开发者快速诊断MQTT连接问题,确保连接可以稳定和可靠地工作。

关于MQTT broker分发遗嘱消息的情况:

MQQT协议中Will消息机制

MQTT协议提供了Will消息机制,用于在意外断开连接时,允许客户端发布一个遗嘱消息到代理中。当客户端离线时,将由MQQT broker分发遗嘱消息。

分发遗嘱消息的情况

以下情况将会触发MQTT broker分发遗嘱消息:

  1. 客户端异常断开:如果客户端未正确关闭其MQTT连接,则broker将检测到该连接的异常断开,并分发遗嘱消息。
  2. 心跳超时:如果心跳机制是启用的,但接收方没有收到任何来自客户端的心跳响应,则认为该客户端已经离线,broker将分发遗嘱消息。
  3. 网络故障:如果客户端与broker之间的网络连接中断,则broker将发现该连接已断开,并分发遗嘱消息。
Will消息内容

每个Will消息包含预定的Will主题和预定义的负载。通过Will消息,人们可以处理设备正常运行时可能无法发送消息或不知道需要发送消息的情况,从而提高了设备的可用性和健壮性。文章来源地址https://www.toymoban.com/news/detail-784453.html

到了这里,关于【物联网协议】MQTT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [C++ 网络协议] 多进程服务器端

    具有代表性的并发服务器端实现模型和方法: 多进程服务器:通过创建多个进程提供服务。✔ 多路复用服务器:通过捆绑并统一管理I/O对象提供服务。 多线程服务器:通过生成与客户端等量的线程提供服务。 目录 1. 进程的概念及应用 1.1 什么是进程? 1.2 创建进程 1.2.1 进程

    2024年02月11日
    浏览(34)
  • 物联网协议NB-IoT,LORA,wifi,蓝牙,zigbee,MQTT,COAP之间的关系

    NB-IoT,LORA,WIFI,蓝牙,zigbee,4G都是物理层的,这几个都需要芯片模组支持(硬件支持) 而MQTT,COAP,HTTP都是应用层协议,这些需要开发服务器,或者对接云平台厂商(软件支持) 所以(MQTT,COAP,HTTP)是居于(NB-IoT,LORA,WIFI,蓝牙,zigbee,4G)的上层协议 不需要网关:

    2024年02月15日
    浏览(54)
  • [网络编程]UDP协议,基于UDP协议的回显服务器

    目录 1.UDP协议介绍 2.UDP协议在Java中的类 2.1DatagramSocket类 2.2DatagramPacket 3.回显服务器 3.1Sever端  3.2Client端   UDP协议是一种网络协议,它是无连接的,全双工,并且是面向数据报,不可靠的一种协议。 常用于在线视频播放,游戏这种实时性要求比较高的应用。或者无需可靠传输

    2024年01月22日
    浏览(51)
  • Mainflux IoT:Go语言轻量级开源物联网平台,支持HTTP、MQTT、WebSocket、CoAP协议

    Mainflux是一个由法国的创业公司开发并维护的 安全、可扩展 的开源物联网平台,使用 Go语言开发、采用微服务的框架。Mainflux支持多种接入设备,包括设备、用户、APP;支持多种协议,包括HTTP、MQTT、WebSocket、CoAP,并支持他们之间的协议互转。 Mainflux的南向接口连接设备,北

    2024年02月01日
    浏览(110)
  • 华为数通HCIP-IGMP(网络组管理协议)

      作用:维护、管理最后一跳路由器以及组播接收者之间的关系;   应用:最后一跳路由器以及组播接收者之间;   原理:当组播接收者需要接收某个组别的流量时,会向最后一跳路由器,发送IGMP报文,最后一跳路由器会根据组播接收者加入的组别,生成组播路由表,进行

    2024年02月14日
    浏览(39)
  • 开源 IoT 物联网分布式实时数据分析服务

    随着物联网设备增长,也产生了大量的数据,这些数据具有高速、多样和实时的特点。如果你的物联网数据 不及时、不准确、不具有可操作性 ,那么你在收集的这些数据就变得毫无价值。为了有效地利用这些数据,我们需要一种能够快速响应、灵活扩展和支持复杂查询的系

    2024年02月12日
    浏览(56)
  • 【计算机网络】HTTP协议以及简单的HTTP服务器实现

    虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输议)就是其中之一。 平时我们俗称的 “网址” 其实就是说的 URL 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了.

    2024年01月20日
    浏览(60)
  • LoRaWAN网关与网络服务器(NS)的通信CUPS 协议介绍

    LoRa Basics™ Station 定期查询 CUPS 服务器以获取更新。该协议是 HTTP/REST,使用Credentials中描述的客户端/服务器身份验证方法。对于每个查询,工作站都会提供有关其当前状态的信息,并接收包含其 LNS 和 CUPS 凭证更新的二进制 blob,以及具有任意更新的通用数据段。 通用数据段

    2024年02月13日
    浏览(39)
  • 解决网络协议服务器问题的关键:定位能力与抓包技术

    本文分享自华为云社区《提升网络协议服务器的定位能力》,作者:张俭。 近期,我再次涉足于协议服务器相关的工作领域,致力于定位并解决各种问题。简单总结一些心得给大家。如果想要定位出协议服务器的问题,那么这些能力可能至关重要。 注:我这里比较偏向协议

    2024年01月16日
    浏览(43)
  • 【001_IoT/物联网通信协议基础: HTTP、Websocket、MQTT、AMQP、COAP、LWM2M一文搞懂】

    学历代表过去、能力代表现在、学习力代表将来。 一个良好的学习方法是通过输出来倒逼自己输入。写博客既是对过去零散知识点的总结和复盘,也是参加了 零声教育 写博客活动。 零声教育体验课:https://xxetb.xetslk.com/s/3fbO81 本文是开发过程中的知识点总结,供大家学习交

    2024年04月22日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包