MQTT(Message Queuing Telemetry Transport,基于消息队列遥测传输协议)发布/订阅
(publish/subscribe
)该协议构建了该模式的轻量级通信协议TCP/IP协议上,由IBM在1999年发布。MQTT最大的优点是,它可以为连接远程设备提供实时可靠的信息服务,代码少,带宽有限。作为一种低成本、低带宽占用的即时通信协议,广泛应用于物联网、小型设备和移动应用。
1.MQTT
协议特点
MQTT基于客户端-服务器的消息发布/订阅传输协议。MQTT协议重量轻、简单、开放、易于实现,使其应用广泛。在许多情况下,包括有限的环境,如机器和机器(M2M)通信和物联网(IoT)。广泛应用于卫星链路通信传感器、偶尔拨号的医疗设备、智能家居和一些小型化设备。
MQTT本协议的当前版本为2014年发布的MQTT v3.1.1.除了标准版,还有简化版。MQTT-SN
,该协议主要针对嵌入式设备,一般工作在100台TCP/IP网络,如:ZigBee。
MQTT协议运行在TCP/IP或提供有序、无损、双向连接的其他网络协议。其特点包括:
- 发布/订阅消息模式提供一对多的消息分发,以实现与应用程序的解耦。
- 屏蔽负载内容的信息传输机制。
- 传输信息有三种服务质量(QoS):
最多一次
,消息丢失或重复将丢失或重复,消息发布依赖于底层TCP/IP网络。即:<=1至多一次
,这一级别将确保消息到达,但消息可能会重复。>=1只有一次
,确保消息只到达一次。即:=1。这个级别可以用于一些要求严格的计费系统。
- 为了减少网络流量,最小化数据传输和协议交换节),以减少网络流量
- 通知机制在异常中断时通知双方
2.MQTT
协议原理
2.1MQTT
实现协议的方式
- 实现
MQTT
协议需要:客户端
和服务器端
MQTT
协议中有三种身份:发布者(Publish)
、代理(Broker)
(服务器),订阅者(Subscribe)
。其中,新闻发布者
和订阅者
都是客户端,消息代理
是服务器,新闻发布者
可以同时是订阅者
。MQTT
传输信息分为:主题(Topic)
和负载(payload)
两部分Topic
,可理解为新闻类型,订阅者
订阅(Subscribe)之后,您将收到主题的消息内容(payload
)payload
,可以理解为新闻的内容,是指订阅者
使用的具体内容
2.2 网络传输和应用信息
MQTT
底层网络传输将建立:它将建立客户端与服务器的连接,并提供基于字节流的有序、无损的双向传输。
通过应用数据MQTT
网络发送时,MQTT
相关质量相关(QoS)和主题名(Topic)相关连。
2.3MQTT
客户端
一个使用MQTT
该协议的应用程序或设备总是建立在服务器的网络连接上。客户端可以:
- 发布其他客户端可能订阅的信息
- 订阅其他客户端发布的消息
- 退订或删除应用程序消息
- 断开连接到服务器
2.4MQTT
服务器
MQTT
服务器被称为消息代理(Broker),它可以是应用程序或设备。它位于新闻中发布者
和订阅者
之间,它可以:
- 接受客户的网络连接
- 接受客户发布的应用信息
- 处理客户端的订阅和退订请求
- 将应用程序消息转发给订阅客户
2.5MQTT
订阅、主题、会话
订阅包括主题筛选器(Topic Filter)以及最大的服务质量(QoS)。订阅会和会话(Session)关联。一个会话可以包含多个订阅。每个会话中的每个订阅都有不同的主题筛选器。
每个客户端与服务器建立连接后,都是客户端与服务器之间的状态交互。会话存在于网络之间,也可能跨越客户端与服务器之间的多个连续网络连接。
连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端。
在订阅表达式中使用主题名通配符筛选器,表示订阅匹配的多个主题。
消息订阅者收到的具体内容
2.6MQTT
协议中的方法
MQTT
协议中定义了一些方法(也称为动作), 来表示操作确定资源。 根据服务器的实现,该资源可以代表预先存在的数据或动态生成数据。一般来说,资源是指服务器上的文件或输出。
Connect,等待与服务器建立连接
Disconnect,等待MQTT
客户端完成工作,与服务器断开TCP/IP会话
Subscribe,等待订阅完成
UnSubscribe,一个或多个等待服务器取消客户端topics
订阅
Publish,MQTT
客户端发送消息请求,发送后返回应用程序线程
(原文地址:MQTT协议-MQTT协议简介及协议原则)