简述MQTT的工作原理(简述mqtt通信原理)

http://www.itjxue.com  2024-06-17 22:16  来源:IT教学网  点击次数: 

【内部分享】MQTT协议解读及使用经验

1、正如MQTT协议并没有依赖TCP连接状态,自己在应用层协议上实现心跳报文来控制连接状态,业务方作为MQTT协议的使用者,也不要完全依赖协议的工作状态,而是依托MQTT协议建立属于业务本身的信息汇报机制,以加强系统的稳健性。 Retain Message 可视为客户端主动拉取的行为。

2、MQTT协议的核心操作包括Connect、Disconnect、Subscribe、UnSubscribe和Publish等步骤。连接过程涉及数据包的结构,特别是控制报文,如CONNECT、SUBSCRIBE、SUBACK和UNSUBSCRIBE,它们由固定头部、可变头部和不同类型的实体(仅前三者有实际内容)组成。固定头明确了消息类型和分组标识,可变头根据报文类型动态变化。

3、MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

4、使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制MQTT最简单的使用包括两种,一种是发消息,一种是订阅消息。

5、一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:MQTT服务器以称为消息代理(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间,它可以:订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。

MQTT系列-MQTT的QoS介绍

精简与专注: MQTT的设计原则强调精简性,为嵌入式和IoT环境量身定制。主流版本MQTT1和MQTT5,每个版本都在服务质量(QoS)、消息承载和在线状态管理上提供了不同等级的支持。QoS的等级划分,0、2分别对应低资源、基本保障和高安全,确保信息传递的可靠性和效率。

例如,CONNECT报文携带着ClientID和Topic信息,而SUBSCRIBE则记录订阅的主题和QoS级别。在智能设备与腾讯云配网注册的场景中,MQTT的运用更为具体。通过构建主流程和调用Qcloud_IoT_Client结构体,如freertos/apps/qcloud/sdk_src/internal_inc/mqtt_client.h中的定义,我们能更好地了解其实现细节。

MQTT协议要求基础传输层能够提供有序的、可靠的、双向传输(从客户端到服务端 和从服务端到客户端)的字节流。 无连接的网络传输协议如UDP是不支持的,因为他们可能会丢失数据包或对数据包重排序。 MQTT按照这里定义的服务质量 (QoS) 等级分发应用消息。

与代理类似,每个MQTT客户端也必须存储一个持久会话。当客户端请求服务器保存会话数据时,客户端负责存储一下信息: QoS 1或2 流中的所有消息,尚未由代理确认。

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份: 发布者(Publish) 、 代理(Broker) (服务器) 、订阅者(Subscribe) 。

使用TCP/IP提供网络连接。主流的MQTT是基于TCP连接进行数据推送的,但是同样有基于UDP的版本,叫做MQTT-SN。这两种版本由于基于不同的连接方式,优缺点自然也就各有不同了。三种消息传输方式QoS:0代表“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。

怎么实现服务器给android客户端主动推送消息

1、您可以使用服务器推送(Push)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。目前常见的解决方案有轮询(Pull)和推送(Push)两种方式。轮询(Pull)方式是客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。

2、轮询(Pull)方式:客户端定时向服务器发送询问消息,一旦服务器有变化则立即同步消息。SMS(Push)方式:通过拦截SMS消息并且解析消息内容来了解服务器的命令,但这种方式一般用户在经济上很难承受。持久连接(Push)方式:客户端和服务器之间建立长久连接,这样就可以实现消息的及时行和实时性。

3、第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push方式比Pull方式更优越。

4、打开应用时向服务器发申请 如果应用一直打开,或者有后台服务,可以定时向服务器发申请 Google本身就有一个推送demo可以用,Google Cloud Message,你可以参考一下,不过国内用Google推送不太稳定,但是我测试的时候基本上都能推送成功。

5、小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制MQTT最简单的使用包括两种,一种是发消息,一种是订阅消息。

(责任编辑:IT教学网)

更多

相关综合特效文章

推荐综合特效文章