关注、星标公众号,不错过精彩内容
作者:黄工
公众号:strongerHuang
物联网 (IoT) 设备需要连接到互联网,联网的方式有很多种,传输协议也有很多种,为什么MQTT才是物联网的首选传输协议呢?
本文重点讲述MQTT传输协议。
一、关于MQTT
MQTT:Message Queuing Telemetry Transport,消息队列遥测传输。
互联网的基础网络协议是 TCP/IP,MQTT(消息队列遥测传输) 是基于 TCP/IP 协议栈而构建的。
MQTT由IBM在1999年发布,是一种基于发布/订阅(publish / subscribe)模式的"轻量级"通讯协议,在 2014 年末,它正式成为了一种 OASIS 开放标准,而且在一些流行的编程语言中受到支持(通过使用多种开源实现)。
前面文章《http和tcp/ip的关系和区别》提及了OSI(开放式系统互联),这里MQTT同TCP/IP属于第四层(传输层)。
参考网址:
http://mqtt.org
http://mqtt.p2hp.com
https://www.ibm.com/developerworks/cn/iot/
https://docs.oasis-open.org/mqtt/mqtt/v5.0/mqtt-v5.0.html
二、MQTT特点
MQTT特点:
开放消息协议,简单易实现
发布订阅模式,一对多消息发布
消息QoS支持,可靠传输保证
基于TCP/IP网络连接,提供有序,无损,双向连接。
1字节固定报头,2字节心跳报文,最小化传输开销和协议交换,有效减少网络流量。
设计规范:
由于物联网的环境是非常特别的,所以MQTT遵循以下设计原则:
精简,不添加可有可无的功能;
允许用户动态创建主题,零运维成本;
把传输量降到最低以提高传输效率;
把低带宽、高延迟、不稳定的网络等因素考虑在内;
支持连续的会话控制;
理解客户端计算能力可能很低;
提供服务质量管理;
发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递;
假设数据不可知,不强求传输数据的类型与格式,保持灵活性。
三、物联网为何首选MQTT
1.为何选择 MQTT
MQTT 是一种轻量级的、灵活的网络协议,致力于为 IoT 开发人员实现适当的平衡:
这个轻量级协议可在严重受限的设备硬件和高延迟/带宽有限的网络上实现。
它的灵活性使得为 IoT 设备和服务的多样化应用场景提供支持成为可能。
为了了解为什么 MQTT 如此适合 IoT 开发人员,我们首先来分析一下为什么其他流行网络协议未在 IoT 中得到成功应用。
2.为什么不选择其他众多网络协议
大多数开发人员已经熟悉 HTTP Web 服务。那么为什么不让 IoT 设备连接到 Web 服务?设备可采用 HTTP 请求的形式发送其数据,并采用 HTTP 响应的形式从系统接收更新。这种请求和响应模式存在一些严重的局限性:
A.HTTP 是一种同步协议。客户端需要等待服务器响应。Web 浏览器具有这样的要求,但它的代价是牺牲了可伸缩性。在 IoT 领域,大量设备以及很可能不可靠或高延迟的网络使得同步通信成为问题。异步消息协议更适合 IoT 应用程序。传感器发送读数,让网络确定将其传送到目标设备和服务的最佳路线和时间。
B.HTTP 是单向的。客户端必须发起连接。在 IoT 应用程序中,设备或传感器通常是客户端,这意味着它们无法被动地接收来自网络的命令。
HTTP 是一种 1-1 协议。客户端发出请求,服务器进行响应。将消息传送到网络上的所有设备上,不但很困难,而且成本很高,而这是 IoT 应用程序中的一种常见使用情况。
C.HTTP 是一种有许多标头和规则的重量级协议。它不适合受限的网络。
出于上述原因,大部分高性能、可扩展的系统都使用异步消息总线来进行内部数据交换,而不使用 Web 服务。事实上,企业中间件系统中使用的最流行的消息协议被称为 AMQP(高级消息排队协议)。但是,在高性能环境中,计算能力和网络延迟通常不是问题。AMQP 致力于在企业应用程序中实现可靠性和互操作性。它拥有庞大的特性集,但不适合资源受限的 IoT 应用程序。
除了 AMQP 之外,还有其他流行的消息协议。例如,XMPP(Extensible Messaging and Presence Protocol,可扩展消息和状态协议)是一种对等即时消息 (IM) 协议。它高度依赖于支持 IM 用例的特性,比如存在状态和介质连接。与 MQTT 相比,它在设备和网络上需要的资源都要多得多。
那么,MQTT 为什么如此轻量且灵活?因为MQTT 协议的一个关键特性是发布和订阅模型。与所有消息协议一样,它将数据的发布者与使用者分离。
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
推荐阅读:
关注微信公众号『strongerHuang』,后台回复“1024”,查看更多精彩内容。
长按识别图中二维码关注