1.MQTT协议概念理解
MQTT(Message Queuing Telemetry Transprot,消息队列遥测传输协议),是一种基于发布/订阅模式的“轻量级” 通讯协议,该协议构建于 TCP/IP协议上,由IBM1999年发布。MQTT最大的优点在于,可以极少的 代码和有限的带宽,为连接远程的设备提供实时可靠的消息服务。作为一种低开小、低带宽占用的即时通讯协议,使其了物联网、小型设备、移动应用等方面有较广泛的应用。
2.1 MQTT的协议实现方式
实现MQTT协议需要: 客户端和服务器端。
MQTT 协议中有三种身份:发布者(Pulish),代理者(Booler)(服务器)、订阅者(Subscribe)。其中消息的发布者和订阅者都是客户端,消息代理是服务器端,消息发布可以同时是订阅者。
MQTT传输的消息分为:主题(Topic)和负载(Payload)两部分
Topic,可以理解为消息的订阅类型,订阅者订阅后,就会收到该主题的消息内容
Payload,可以理解为消息的内容,是指订阅者具体要使用的内容
2.2网络传输与应用消息
MQTT会构建底层网络传输:它将建立客户端到服务器的连接。提供两者之间的一个有序无损的基于字节流的双向传输。当应用数据通过MQTT网络发送时,MQTT会把与之相关的 服务质量(Qos)和主题名(Topic)想关联。
2.3MQTT客户端
一个使用MQTT协议的应用程序或者设备,它总是建立到服务器的网络连接。客户端可以:
发布其他客户端可能会订阅的 消息
退订或删除应用程序的消息
订阅其他客户端发布的消息
2.4MQTT服务器
MQTT服务器以称为“消息代理(Broker)”,可以是一个应用程序或一台设备。它是 位于消息发布和订阅者的之间。可以
接收来自客户端的网络连接
接收客户发布的应用消息
处理来自客户端的订阅和退订请求
向订阅的客户转发应用程序消息
2.5MQTT协议中的订阅、主题、和会话
订阅(Subscription)
订阅包含 主题筛选器(Topic Filter)和大量的服务质量(QOS)。订阅会与一个会话(Session)关联。一个会话可以 包含多个订阅。每个 会话都会有一个不同的主题筛选器。
会话(Session)
每个 客户端与服务器建立连接后就是一个会话,客户端与服务器之间的状态交互。会话存在于一个网络之间,也可能在客户端和服务器之间跨越多个连续的网络连接。
主题名(Topic Name)
连接到一个应用程序的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给 订阅所匹配标签的每个客户端。
主题筛选器(Topic Filter)
一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题。
负载(Payload)
消息订阅者所需接收的内容
2.6MQTT协议中的方法
MQTT协议中定义了一些方法(动作),来与表示对确定资源所进行操作。这个资源可以代表预先存在的数据或者动态生成数据。这取决于服务器的实现。通常来说,资源指服务器上的文件或者输出。
Connect,等待与服务器建立连接
Disconnect 等待MQTT客户端完成所做的工作,并且与服务器断开TCP/IP会话
Subscribe, 等待完成订阅
UnSubcribe 等待服务器取消客户端的一个或多个topic订阅
Publish MQTT客户端发送请求,完成后返回应用程序线程
2.特点
MQTT是基于客户端-服务器的消息发布/订阅传输协议。MQTT是轻量级、简单、开放和易于实现的,这些特点使他适用范围广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在。通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化的设备中已广泛使用。
MQTT协议当前版本为2014年发布的MQTTv3.1.1。除标准版以外,还用一个简化的MQTT-SN该协议主要针对嵌入式设备,这些设备一般工作于TCP/IP网络,如:ZigBee。