白话消息队列遥测传输协议(MQTT)
MQTT 是一种基于发布/订阅模式的轻量级通讯协议,该协议构建于 TCP/IP 协议上,由 IBM 在 1999 年发布,它是开放消息协议,简单容易实现,消息支持 Qos。MQTT 最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。这些特性,使其在物联网、小型设备、移动应用、车联网、电力能源等方面有着较为广泛的应用。 我是在看嵌入式资料时,了解到了 MQTT 协议。嵌入式还有一种协议叫 CoAP。今天主要讲下 MQTT。我们先看下 MQTT 协议的由来。 MQTT 最初是由 AndyStandford-Clark 博士和 Arlen Nipper 博士于 1999 年发明的通讯协议。他们当时是为了在狭窄的网络带宽和微小电力损耗的前提之下,提供石油管道传感器和人造卫星之间一个轻量、可靠的二进制通讯协议。2011 年,IBM 和 Eurotech 将 MQTT 协议捐赠给 Eclipse 基金会,并加入了 Eclipse M2M Industry 工作组织。2014 年 10 月,MQTT 正式成为一个开放的 OASIS 国际标准。 在看到这里的时候,我在想,如果 MQTT 不公布出来,不就是一个私有协议吗?前段时间,在学习 TCP/IP 时,我还在想一件事,TCP 连接之后,就可以发送数据,但是数据格式还需要自己进行定义,发送方和接收方都需要按照规定的格式进行发送和解析。还有就是 TCP 连接如何认证?除了 IP 白名单之外,如何在应用上实现认证?这些在看了 MQTT 规范后,这些问题都找到了答案,我不知道他们当时怎么想的,我真想掰开他们的脑子,他们是真的太厉害了。他们在 1999 年就已经完成了,现在 20 多年过去了。对于入门 TCP/IP 的我来说,这是一种精神食粮,能吃还很香。 这两天一直在看 MQTT 的相关资料,以及理解 MQTT 协议,不知道哪篇资料写的 MQTT 是基于 IP 协议的,后来才基于 TCP/IP 协议。我个人觉得基于 IP 协议反而更贴切当时的环境,肯定是后来协议优化之后选择的 TCP/IP 协议。在说 MQTT 协议之前,先说下我心中的疑惑?我是看嵌入式资料时,知道 MQTT 的,现在的物联网很火,完全可以做到通过私有协议来连接控制,为什么要 MQTT 协议?后来,看看身边的事物,例如 USB,是为了兼容和互通。我不知道为啥选择 MQTT?开源应该算一个原因吧,MQTT 协议设计非常好算另一个原因吧。我们来看下 MQTT 的特点吧。 ...