MQTT协议(Message Queue Telemetry Transport,消息队列遥测传输协议)是IBM的Andy Stanford-Clark和Arcom的Arlen Nipper于1999年为了一个通过卫星网络连接输油管道的项目开发的。为了满足低电量消耗和低网络带宽的需求,MQTT协议在设计之初就包含了以下几个特点。
·实现简单;
·提供数据传输的QoS;
·轻量、占用带宽低;
·可传输任意类型的数据;
·可保持的会话(Session)。
此后,IBM一直将MQTT协议作为一个内部协议在其产品中使用。直到2010年,IBM公开发布了MQTT 3.1版本。2014年,MQTT协议正式成为OASIS(结构化信息标准促进组织)的标准协议。随着多年的发展,MQTT协议的重点不再只是嵌入式系统,而是更广泛的物联网世界。
简单来说,MQTT协议有以下特性。
·基于TCP协议的应用层协议;
·采用C/S架构;
·使用订阅/发布模式,将消息的发送方和接受方解耦;
·提供3种消息的QoS(Quality of Service):至多一次、最少一次、只有一次;
·收发消息都是异步的,发送方不需要等待接收方应答。
MQTT协议的架构由Broker和连接到Broker的多个Client组成,如图2-1所示。
图2-1 MQTT协议的Broker和Client
MQTT协议可以为大量的低功率、工作网络环境不可靠的物联网设备提供通信保障。而它在移动互联网领域也大有作为,很多Android App的推送功能都是基于MQTT协议实现的,一些IM的实现也是基于MQTT协议的。
MQTT协议可以说是目前运用最广的协议。下面的章节将对MQTT协议以及其特性进行详细的讲解。