searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

物联网MQTT协议详解

2023-03-27 12:14:27
107
0

一、什么是MQTT协议

Message Queuing Telemetry Transport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与 HTTP 一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。

原理:

(1)MQTT协议身份和消息格式

有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分

Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
payload,消息的内容


(2) 网络传输与应用消息

MQTT会构建底层网络传输:它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。

应用数据通过MQTT网络发送时,MQTT会把与之相关的服务质量(QoS)和主题名(Topic)相关连

 

(3)MQTT客户端作用

发布其他客户端可能会订阅的信息
订阅其它客户端发布的消息
退订或删除应用程序的消息
断开与服务器连接


(4)MQTT服务端作用

可以是一个应用程序或一台设备

接受来自客户的网络连接
接受客户发布的应用信息
处理来自客户端的订阅和退订请求
向订阅的客户转发应用程序消息


(5) MQTT协议中的订阅、主题、会话

订阅(Subscription):

订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器会话(Session):

每个客户端与服务器建立连接后就是一个会话

 主题名(Topic Name):

就是连接到一个应用程序消息的一个标签。该标签与服务器的订阅的相匹配,服务器会将消息发送给订阅所匹配标签的每个客户端。

主题筛选器(Topic Filter):

表示订阅所匹配到的多个主题

负载(Payload):

其实就是内容。消息订阅者所具体接收的内容

二、MQTT协议的特点

轻量、简单、开放,是低开销、低带宽占用的即时通讯协议。使用场景有:机器与机器(M2M)、物联网(IoT)。MQTT协议当前版本为,2014年发布的MQTT v3.1.1。除标准版外,还有一个简化版MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于TCP/IP网络,如ZigBee

使用的发布/订阅消息模式,它提供了一对多消息分发,以实现与应用程序的解耦。
对负载内容屏蔽的消息传输机制。
对传输消息有三种服务质量(QoS):

1.QoS  0:最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1

2.QoS  1:最少一次(承诺消息将至少传送一次给订阅者),这一级别会确保消息到达,但消息可能会重复。即:>=1

3.QoS  2:只有一次(承诺消息仅传送到目的地一次),确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别

(注意:带有唯一消息 ID 的消息会存储两次,首先来自发送者,然后是接收者。QoS 级别 2 在网络中具有最高的开销,因为在发送方和接收方之间需要两个流)

数据传输和协议交换的最小化(协议头部只有2字节),以减少网络流量
通知机制,异常中断时通知传输双方

三、MQTT协议数据包结构

(1)固定头(Fixed header)

存在于所有MQTT数据包中,表示数据包类型、数据包的分组类标识;

(2)可变头(Variable header)

存在于部分MQTT数据包中,数据包类型决定了可变头是否存在 及具体内容

(3)消息体(Payload)

存在于部分MQTT数据包中,表示客户端收到的具体内容

整体MQTT的消息格式:

四、客户端使用

配置好连接信息连接进来之后,可以进行消息推送和订阅等工作

0条评论
作者已关闭评论
skip
4文章数
2粉丝数
skip
4 文章 | 2 粉丝

物联网MQTT协议详解

2023-03-27 12:14:27
107
0

一、什么是MQTT协议

Message Queuing Telemetry Transport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与 HTTP 一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。

原理:

(1)MQTT协议身份和消息格式

有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。

MQTT传输的消息分为:主题(Topic)和负载(payload)两部分

Topic,可以理解为消息的类型,订阅者订阅(Subscribe)后,就会收到该主题的消息内容(payload)
payload,消息的内容


(2) 网络传输与应用消息

MQTT会构建底层网络传输:它将建立客户端到服务器的连接,提供两者之间的一个有序的、无损的、基于字节流的双向传输。

应用数据通过MQTT网络发送时,MQTT会把与之相关的服务质量(QoS)和主题名(Topic)相关连

 

(3)MQTT客户端作用

发布其他客户端可能会订阅的信息
订阅其它客户端发布的消息
退订或删除应用程序的消息
断开与服务器连接


(4)MQTT服务端作用

可以是一个应用程序或一台设备

接受来自客户的网络连接
接受客户发布的应用信息
处理来自客户端的订阅和退订请求
向订阅的客户转发应用程序消息


(5) MQTT协议中的订阅、主题、会话

订阅(Subscription):

订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。订阅会与一个会话(Session)关联。一个会话可以包含多个订阅。每一个会话中的每个订阅都有一个不同的主题筛选器会话(Session):

每个客户端与服务器建立连接后就是一个会话

 主题名(Topic Name):

就是连接到一个应用程序消息的一个标签。该标签与服务器的订阅的相匹配,服务器会将消息发送给订阅所匹配标签的每个客户端。

主题筛选器(Topic Filter):

表示订阅所匹配到的多个主题

负载(Payload):

其实就是内容。消息订阅者所具体接收的内容

二、MQTT协议的特点

轻量、简单、开放,是低开销、低带宽占用的即时通讯协议。使用场景有:机器与机器(M2M)、物联网(IoT)。MQTT协议当前版本为,2014年发布的MQTT v3.1.1。除标准版外,还有一个简化版MQTT-SN,该协议主要针对嵌入式设备,这些设备一般工作于TCP/IP网络,如ZigBee

使用的发布/订阅消息模式,它提供了一对多消息分发,以实现与应用程序的解耦。
对负载内容屏蔽的消息传输机制。
对传输消息有三种服务质量(QoS):

1.QoS  0:最多一次,这一级别会发生消息丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1

2.QoS  1:最少一次(承诺消息将至少传送一次给订阅者),这一级别会确保消息到达,但消息可能会重复。即:>=1

3.QoS  2:只有一次(承诺消息仅传送到目的地一次),确保消息只有一次到达。即:=1。在一些要求比较严格的计费系统中,可以使用此级别

(注意:带有唯一消息 ID 的消息会存储两次,首先来自发送者,然后是接收者。QoS 级别 2 在网络中具有最高的开销,因为在发送方和接收方之间需要两个流)

数据传输和协议交换的最小化(协议头部只有2字节),以减少网络流量
通知机制,异常中断时通知传输双方

三、MQTT协议数据包结构

(1)固定头(Fixed header)

存在于所有MQTT数据包中,表示数据包类型、数据包的分组类标识;

(2)可变头(Variable header)

存在于部分MQTT数据包中,数据包类型决定了可变头是否存在 及具体内容

(3)消息体(Payload)

存在于部分MQTT数据包中,表示客户端收到的具体内容

整体MQTT的消息格式:

四、客户端使用

配置好连接信息连接进来之后,可以进行消息推送和订阅等工作

文章来自个人专栏
杂货铺
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0