IOT 的 10 种常见协议、组网模式、特点及其使用场景浅析

        前情:

        开放系统互连(OSI)模型,它列出了七层。从下到上,各层如下:

物理层

数据链接

网络层

传输层

会话层

推介会

应用层

        物联网也以多层模型的形式表达。尽管有些使用 OSI 七层模型,但其他使用的模型包括以下内容:

三层模型:感知、网络、应用

四层模型:感知、支撑、网络、应用

五层模型:感知、传输、处理、应用和业务

        或者物理层、数据链路、网络、传输和应用使用的互联网协议通常因层而异。

        因此,物联网生态系统可以有多种协议,不同的协议可以在不同的层进行通信,一些协议可以跨层桥接。

正文:

        物联网(IoT)的发展带来了多种协议,用于设备间的通信与数据交换。以下是一些常见的 IoT 协议及其组网模式:

1. MQTT(Message Queuing Telemetry Transport)

        开发于 1999 年,最初称为消息队列遥测传输,现在简称为 MQTT。该协议中不再有任何消息队列。MQTT 使用发布-订阅架构来实现 M2M 通信。其简单的消息传递协议适用于受限设备,并支持多个设备之间的通信。它设计用于低带宽情况,例如不可靠网络上的传感器和移动设备。该功能使其成为连接具有较小代码占用空间的设备以及由于带宽限制或不可靠连接而导致不同程度的延迟的无线网络的普遍首选选择。MQTT 最初是一种专有协议,现在是连接物联网和工业物联网设备的领先开源协议。

协议特点:

  • 轻量级的发布/订阅消息传输协议。
  • 设计用于高延迟或不可靠的网络环境。
  • 支持一对多的消息分发,可以减少网络带宽的占用。

组网模式:

  • MQTT 通常工作在客户端-服务器模型上,其中 MQTT 客户端与 MQTT 代理(Broker)连接,然后发布或订阅主题。

组网示例:

[设备] --(publish)---> [MQTT Broker] <---(subscribe)--- [设备]                         
                        |                         
                        v                      
                      [设备]

        在 MQTT 中,设备作为客户端发布消息到一个中央代理(Broker),其他设备可以订阅这些消息。Broker 负责消息的分发。

特点:

  • 数据传输需求:适用于小至中型数据负载,优化了数据包以减少网络带宽占用。
  • 功耗限制:设计轻量,适用于电池供电的设备。
  • 通信距离:依赖于底层网络,可通过 Internet 实现全球范围。
  • 设备能力:适用于计算能力有限的设备。

2. CoAP(Constrained Application Protocol)

        CoAP协议的设计目标就是在低功耗低速率的设备上实现物联网通信。CoAP 是一种专为物联网中的受限节点和网络设计的特殊 Web 传输协议。它不仅能够轻松转换为 HTTP 以便与 Web 无缝集成,同时还满足特定的要求,如多播支持、极低的开销和适用于受限环境的简洁特性。CoAP和HTTP协议一样,采用URL标示需要发送的数据,在协议格式的设计上也基本是参考HTTP协议,非常容易理解。

协议特点:

  • 专为小型设备设计的 Web 传输协议。
  • 基于 REST 模型,适用于资源受限的设备和网络。
  • 支持 GET, POST, PUT, DELETE 操作。

组网模式:

  • CoAP 也是基于客户端-服务器架构的,但它支持资源发现和组播通信,允许设备作为服务器。

组网示例:

        [客户端设备] --(GET/POST/PUT/DELETE)--> [服务器设备]

        CoAP 遵循传统的客户端-服务器模型,但也可以进行资源发现和组播通信。

特点:

  • 数据传输需求:适用于小型数据传输,使用 UDP 减少开销。
  • 功耗限制:非常适合低功耗设备和资源受限网络。
  • 通信距离:主要用于局部网络,但也可以通过代理跨越互联网。
  • 设备能力:适合资源受限设备,如 8 位微控制器。

3. HTTP/HTTPS

略。

协议特点:

  • 超文本传输协议(HTTP)是一种用于分布式、协作和超媒体信息系统的应用层协议。
  • HTTPS 是 HTTP 的安全版本,它通过 SSL/TLS 进行加密。

组网模式:

  • HTTP/HTTPS 主要基于客户端-服务器模型,其中 Web 服务器处理客户端请求并发送响应。

组网示例:

        [客户端] --(HTTP请求)--> [服务器]

        HTTP/HTTPS 是基于请求/响应模式的协议,客户端发起请求,服务器响应请求。

特点:

  • 数据传输需求:适用于中至大型数据负载,通常用于复杂文本或多媒体内容传输。
  • 功耗限制:功耗相对较高,不适合电池供电的设备长期使用。
  • 通信距离:基于 Internet,全球范围。
  • 设备能力:需要能处理 TCP/IP 堆栈的设备。

4. WebSocket

        WebSocket是一种通过单个长期连接运行的通信协议,是HTML5提出的基于TCP之上的可支持全双工通信的协议标准,其在设计上基本遵循HTTP的思路,支持客户端(通常是 Web 浏览器)和服务器之间的双向、全双工交互。该协议在传输层安全性 (TLS) 或安全套接字层 (SSL) 之上运行,并提供交换数据的安全方法。

协议特点:

  • 提供全双工通信渠道,可以在客户端和服务器之间建立持久连接。
  • 允许服务器主动发送信息给客户端。

组网模式:

  • WebSocket 协议是基于 TCP 的,它开始于 HTTP 握手,然后升级到 WebSocket 连接,允许双向通信。

组网示例:

        [客户端] <----(全双工)----> [服务器]

        WebSocket 建立起一个持久的全双工通信通道,允许服务器和客户端之间的双向实时通信。

特点:

  • 数据传输需求:支持实时数据流,适用于连续数据传输。
  • 功耗限制:因为持续的连接状态,可能比请求-应答协议消耗更多电力。
  • 通信距离:基于 Internet,可以实现很远距离的通信。
  • 设备能力:设备需要有处理持续连接的能力。

5. Bluetooth Low Energy (BLE)

        蓝牙是一种短距离无线技术,使用短波长、超高频无线电波。它最常用于音频流,但它也已成为无线和连接设备的重要推动者。因此,这种低功耗、低范围的连接选项是个人局域网和物联网部署的首选。

        另一种选择是低功耗蓝牙,称为蓝牙 LE 或 BLE,这是针对物联网连接优化的新版本。顾名思义,BLE 的功耗比标准蓝牙低,这使得它在许多用例中特别有吸引力,例如消费者方面的健康和健身追踪器以及智能家居设备以及商业方面的店内导航。

协议特点:

  • 面向极低功耗应用的无线个人局域网技术。
  • 设计用于简短距离的通信。

组网模式:

  • BLE 设备可以在点对点(P2P)、广播(Broadcast)和网状(Mesh)模式下工作。

组网示例:

        [主设备] --(连接)--> [从设备]

        BLE 通常在一个主设备与多个从设备之间建立连接,但也支持广播和网状网络模式。

特点:

  • 数据传输需求:适用于周期性小数据传输。
  • 功耗限制:非常低的功耗,适合小型电池供电设备。
  • 通信距离:通常在 10 到 100 米之间,取决于环境因素和设备类型。
  • 设备能力:适用于计算能力和存储空间受限的设备。

6. Zigbee

        Zigbee 是一种网状网络协议,专为建筑和家庭自动化应用而设计,是物联网环境中最流行的网状协议之一。Zigbee 是一种短距离、低功耗协议,可用于扩展多个设备之间的通信。它的范围比 BLE 更长,但数据速率比 BLE 低。它由 Zigbee 联盟监管,提供灵活的自组织网格、超低功耗和应用程序库。

协议特点:

  • 基于 IEEE 802.15.4 标准的高级通信协议。
  • 专为低功耗、低数据速率和近距离(如家庭自动化)的无线个人局域网设计。

组网模式:

  • Zigbee 设备能够形成三种类型的网络:星形网络、树形网络和网状网络。

组网示例:

星形网络:

        [协调器] --(无线)--> [路由器/终端设备]

        

网状网络:

        [设备] <--> [设备] <--> [设备]

        Zigbee 支持星形、树形和网状网络拓扑。

特点:

  • 数据传输需求:支持小至中等数据负载,适合传感器数据和控制指令。
  • 功耗限制:设计用于低功耗设备,电池寿命可以达到数年。
  • 通信距离:几十米内,通过网状网络扩展覆盖范围。
  • 设备能力:适用于资源受限的设备。

7. Z-Wave

        Z-Wave 是一种基于低功耗射频技术的无线网状网络通信协议。与蓝牙和 Wi-Fi 一样,Z-Wave 允许智能设备进行加密通信,从而为物联网部署提供一定程度的安全性。它通常用于家庭自动化产品和安全系统,以及商业应用,例如能源管理技术。它在美国以 908.42 MHz 无线电频率运行;不过,其频率因国家而异。Z-Wave 得到 Z-Wave 联盟的支持,该联盟是一个致力于扩展使用 Z-Wave 的设备的技术和互操作性的成员联盟。

协议特点:

  • 面向家庭自动化的无线通信协议。
  • 低功耗,专为小型智能设备设计。

组网模式:

  • Z-Wave 通常组建成一个星形网络,但也支持网状网络拓扑以扩展覆盖范围。

组网示例:

星形网络:

[主控制器] --(无线)--> [从设备]



网状网络:

[设备] <--> [设备] <--> [设备]

        Z-Wave 网络同样支持星形和网状拓扑。

特点:

  • 数据传输需求:与 Zigbee 类似,适用于中等大小的数据负载。
  • 功耗限制:低功耗设计,电池寿命较长。
  • 通信距离:户内通常在 30 米内,户外可达 100 米。
  • 设备能力:主要用于简单的家用自动化设备。

8. LoRaWAN (Long Range Wide Area Network)

        LoRa 代表远程,是一种非蜂窝无线技术,正如其名称所描述的,提供远程通信功能。它具有低功耗和安全数据传输功能,适用于 M2M 应用和物联网部署。它是一项专有技术,现已成为 Semtech 射频平台的一部分。Semtech 是 LoRa 联盟的创始成员,该联盟现在是 LoRa 技术的管理机构。LoRa 联盟还设计并现在维护 LoRaWAN,这是一种基于云的开放协议,使物联网设备能够与 LoRa 进行通信。

协议特点:

  • 一种低功耗广域网通信技术。
  • 适用于远距离通信和低功耗设备。

组网模式:

  • LoRaWAN 通常形成星形网络,其中端设备通过 LoRa 传输技术与网关通信,网关再将数据传送到中心服务器。

组网示例:

星形网络:

        [终端设备] --(无线)--> [网关] --(互联网)--> [网络服务器]

        LoRaWAN 设备通过无线方式连接到网关,网关再将数据传输到中央网络服务器。

特点:

  • 数据传输需求:适用于小数据包传输,如传感器数据。
  • 功耗限制:非常低的功耗,适合远距离的电池供电设备。
  • 通信距离:可达几公里甚至更远。
  • 设备能力:适用于计算能力和存储空间非常有限的设备。

9. NFC (Near Field Communication)

        NFC(近场通信 Near Field Communication)实质是脱胎于无线设备间的一种“非接触式射频识别”(RFID)及互联技术,是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,识别工作无须人工干预。

协议特点:

  • 使设备能在几厘米的距离内进行通信的短距离无线通信技术。
  • 通常用于接触式支付系统、电子身份文档等。

组网模式:

  • NFC 主要用于点对点通信。

组网示例:

点对点:

        [设备] <--> [设备]

        

        NFC 是用于两个设备在近距离内进行通信的协议。

特点:

  • 数据传输需求:非常小的数据负载,通常用于快速数据交换。
  • 功耗限制:非常低,一些 NFC 设备甚至可以通过近场通信本身的能量驱动。
  • 通信距离:非常短,一般在几厘米内。
  • 设备能力:适用于简单的互动任务,如支付和配对。

10. Thread

        Thread是一个为低功耗物联网(IEEE 802.15.4-2006 WPAN)设备设计的基于 IPv6 的网络协议。Thread 是一个新的网状网络协议,它并不依赖其它的 802.15 网状网络协议(如 ZigBee、Z-Wave 和 Bluetooth LE)。

协议特点:

  • 基于 IP 的、低功耗、无线网络协议。
  • 专为家庭自动化、建筑自动化和互联家电设计。

组网模式:

  • Thread 设计用于创建和维护大量设备的网状网络。

组网示例:

网状网络:
[设备] <--> [设备] <--> [设备]
 |              | 
 v              v
 [设备]        [设备]

Thread 设计用于创建一个自我恢复的网状网络,其中每个设备都可以与其他设备直接通信。

特点:

  • 数据传输需求:适用于低至中等数据负载,特别是在家庭自动化中。
  • 功耗限制:低功耗,适合家居设备和商业自动化,通常使用一块电池便能工作数年
  • 通信距离:可通过网状拓扑覆盖大范围。
  • 设备能力:支持 IPv6,需要具备一定的计算能力。
  • 易于部署和维护 — 安装、启动和操作相对简单
  • 稳定可靠 — 具有自愈能力的网状网络,无单点故障,并且采用扩频技术以提高抗干扰能力

        每种协议都有其优势和用途,选择合适的协议通常需要在这些特点之间做出权衡。

        每个设备可以用一个节点来表示,而连接则可以用线或者箭头来表示。对于星形网络,中心节点通常是协调器或者网关;对于网状网络,每个节点都与周围的多个节点相连,形成一个网状结构。

        物联网协议的使用场景和示例

了解各种物联网(IoT)协议的组网模式,特点,有助于选择最适合特定应用的通信方法。下面是一些常见协议的使用场景和示例:

1. MQTT

使用场景:

  • 远程监控
  • 家庭自动化
  • 物流跟踪
  • 连接带宽受限或网络不稳定的设备

示例:

  • 智能温室内的传感器使用 MQTT 协议将温度和湿度数据发送到中央服务器进行分析和监控。

2. CoAP

使用场景:

  • 低功耗设备网络
  • 智能城市和智能照明
  • 限制性环境如传感器网络

示例:

  • 城市街道上的智能路灯通过 CoAP 报告其状态并接收控制命令。

3. HTTP/HTTPS

使用场景:

  • 互联网集成服务
  • 网页交互
  • 云服务交互

示例:

  • 智能家电(如烤箱或冰箱)通过 HTTPS 与制造商的云服务交互,接收固件更新或提供设备使用数据。

4. WebSocket

使用场景:

  • 实时数据传输
  • 实时通讯
  • 多媒体流

示例:

  • 实时位置跟踪系统,如共享自行车应用,使用 WebSocket 与服务器实时同步自行车位置信息。

5. Bluetooth Low Energy (BLE)

使用场景:

  • 健康和健身追踪器
  • 智能手表和可穿戴设备
  • 近距离设备互连

示例:

  • 一款运动追踪手环使用 BLE 与智能手机同步活动数据。

6. Zigbee

使用场景:

  • 家庭自动化
  • 工业控制
  • 无线传感器网络

示例:

  • 家中的各种智能家居设备(如灯泡、开关、恒温器)通过 Zigbee 协议相互通信,建立一个网络,使用户可以远程控制。

7. Z-Wave

使用场景:

  • 家庭自动化和安全系统
  • 能源管理

示例:

  • 一套智能家居安全系统使用 Z-Wave 技术使各种传感器(如门窗传感器、烟雾报警器)能够无缝连接和通信。

8. LoRaWAN

使用场景:

  • 慧农业
  • 智慧城市
  • 资产跟踪

示例:

  • 在广阔农田中,LoRaWAN 用于连接土壤湿度传感器和中心数据库,以进行农作物的水分管理。

9. NFC

使用场景:

  • 接触式支付
  • 访问控制
  • 简易设备配对

示例:

  • 使用 NFC 技术的手机可以轻触支付终端来完成交易,或者与其他手机快速配对交换联系信息。

10. Thread

使用场景:

  • 家庭自动化
  • 商业楼宇自动化
  • 能源管理

示例:

  • 一个智能家居系统利用 Thread 协议来确保所有设备(如门锁、照明系统和恒温器)之间的互操作性和可靠通信。

        每个协议根据其独特的优势和特点找到了适合的应用场景。选择合适的协议需要考虑因素包括距离、数据传输率、能源消耗以及环境复杂性,以及中台复杂度和支持度等方面。

        可根据需要选择合适的协议,可能是一个或者是多个。如果需要协议较多,可以搭建通信中心平台,组合用到的多个协议,集成到具体的应用中使用。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-20 17:06:02       123 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-20 17:06:02       131 阅读
  3. 在Django里面运行非项目文件

    2024-07-20 17:06:02       109 阅读
  4. Python语言-面向对象

    2024-07-20 17:06:02       117 阅读

热门阅读

  1. 探索现代Web开发:WebKit的剪贴板API革新

    2024-07-20 17:06:02       39 阅读
  2. Node.js 路由

    2024-07-20 17:06:02       29 阅读
  3. JDK版本详解

    2024-07-20 17:06:02       24 阅读
  4. Zookeeper是什么,为什么要用,怎么用?

    2024-07-20 17:06:02       32 阅读
  5. 【c++】用c++类做一个猜数字游戏

    2024-07-20 17:06:02       28 阅读
  6. execjs._exceptions.ProgramError: SyntaxError: 语法错误

    2024-07-20 17:06:02       28 阅读
  7. MySQL自增主键出现不连续的原因?

    2024-07-20 17:06:02       30 阅读
  8. C++案例四:简易记事本程序

    2024-07-20 17:06:02       24 阅读