HTTP作为当下使用最为广泛的协议之一,但随着物联网行业的发展,MQTT在过去的几年也受到了大量物联网开发人员的青睐。下面我们就分别对HTTP及MQTT进行比较分析,揭秘谁才是物联网开发的上上之选。
一、首先我们先简单的了解一下MQTT、HTTP协议是什么?
1、MQTT(消息队列遥测传输)是ISO标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。该协议建立在TCP/IP协议之上,在1999年由IBM公司发布,目前已经更新到V5.0版本。
发布/订阅型消息协议模型为用户提供彼此相互独立的设备,也因此增加了整个系统的稳定性。当其中有一个客户端出现故障时,整个系统依然可以正常工作。如图所示:
2.超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,该协议一般在TCP上运行。该协议指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
根据它们的特性进行分析
1、就应用场景分析,MQTT相对于HTTP而言,MQTT协议是为那些计算机性能低下受限,且工作在低带宽,网络不可靠的远程传感器和控制设备通讯而设计的协议。而HTTP是适用于那些性能好一些的终端上,对设备的要求相对较高,所以并不适合M2M的场景。
2、就传输和速度分析,MQTT拥有更快的数据吞吐量,同时MQTT协议还确保了传输质量。分别有三个级别的服务质量提供:
一是:最多一次,保证尽力交付;
二是:至少一次,保证消息至少传输一次,但消息也可以多次传输;
三是:恰好一次,保证每一个消息只被对方接收一次。
MQTT协议简洁、小巧、省电,开销很小(固定长度的头部是 2 字节),协议交换最小化,降低了网络流量,这些都是HTTP所不具备的。
三、总结
下面我们用一张表来总结MQTT协议与HTTP协议的功能。如表1-1所示:
功能 | HTTP协议 | MQTT协议 |
低协议开销 | 否 | 是 |
不稳定网络兼容性 | 否 | 是 |
低功耗功能 | 否 | 是 |
大连接 | 否 | 是 |
推送通知 | 是 | 是 |
客户平台差异 | 是 | 是 |
防火墙容错 | 是 | 是 |
保密性 | 是 | 是 |
表1-1
综上所述,在物联网开发中,MQTT协议更加适合。主要原因是:MQTT速度快、开销小省流量、且拥有更低的功耗和硬件及带宽要求,这些都是与物联网开发完美契合的要点。