物联网(3)——通信协议选择

1.人的互联网与设备互联网

人类和嵌入式设备使用互联网的方式非常不同。

人们主要通过万维网(一系列在互联网上运行的应用程序)来使用互联网。当然,网络并不全是互联网中人机交互。我们还使用电子邮件、短信、移动应用程序和一系列社交媒体工具。

相比之下,在物联网中,自主电子设备通过互联网相互交换信息。但是这些设备并没有类似于网络浏览器和社交媒体的机器。我们正处于开发这些新工具和服务的起始阶段。

2.TCP/IP 协议栈

TCP/IP 协议栈是互联网的核心。它可以用 OSI 七层模型来表示,如下图所示。上面三层组合成应用层,简化了模型。

TCP/IP 协议栈参考模型

物理和数据链接层

嵌入式系统使用的最常见物理层协议有:

  • 以太网 (10, 100, 1G)
  • WiFi (802.11b, g, n)
  • 带 PPP 的串口(点对点协议)
  • GSM, 3G, LTE, 4G

网络层

这好比是互联网生活的地方。之所以命名为互联网(网络间的简短),就是因为它提供了网络之间、物理层之间的连接。该层就是我们寻找无处不在的IP地址的地方。

传输层

在网络层上一层,有TCP 和 UDP 这两个传输协议。

我们人类与 Web 交互(电子邮件、 浏览网站等),大多采用TCP。很多人认为 TCP 应该是传输层使用的唯一协议。TCP 提供逻辑连接、确认传输数据包、重新传输丢失的数据包和流控制。

但对于嵌入式系统来说,TCP 可能有点过犹不及。这就是为什么在传感器采集和远程控制中,有UDP的一席之地,即使它早已降级到网络服务,如DNS和DHCP。

UDP 也更适合实时数据应用,如语音和视频。因为TCP 的数据包确认和重新传输功能对于这些应用来说毫无用处。如果一段数据(如一些语音音频)没有及时传达,再重新传输则没有意义。因为会扰乱原有的次序,混淆信息。

在设计 IoT 设备时,必须考虑如何将本地网络连接到互联网。您可以通过网关实现此功能,也可以将此功能构建到设备本身中。许多 MCU现在集成了以太网控制器,使得这项任务更加轻松。

3.物联网协议

您能否使用熟悉的 Web 技术构建 IoT 系统?当然可以,只是没有新出现的协议那样高效。

HTTP(S) 和 Websockets 是常见的现有标准,可用于有效载荷中传递 XML 或 JSON。JSON给 Web 开发人员提供了一个抽象层,用于创建能与 Web 服务器持久连接的有状态 Web 应用。

HTTP

HTTP 是Web中客户端-服务器模型(CS模型)的基础。实现 HTTP 的更安全的方法是, IoT 设备中只包括客户端,而没有服务器。换句话说,开发只能发起连接、不能接收访问的 IoT 设备更安全。毕竟,您不想允许外部访问本地网络。

网络套接字

WebSocket 是一种协议,它通过客户端和服务器之间的单个 TCP 连接提供全双工通信。它是 HTML 5 规范的一部分。WebSocket 标准简化了双向 Web 通信和连接管理。

XMPP

现有 Web 技术在 IoT 领域中会出现新用途,XMPP(可扩展通信和表示协议)就是一个范例。

XMPP根植于即时消息和状态信息。它已扩展到用于 VoIP 的信令、协作、轻量级中间件、内容联合和 XML 数据的通用路由。它是洗衣机、烘干机、冰箱等白色家电大规模管理协议的角逐者之一。

CoAP

尽管 Web 协议可用于 IoT 设备,但对于大多数 IoT 应用来说,它们太冗余了。受限应用协议 (CoAP)由 IETF 设计,用于低功耗和受限网络。CoAP 是一个 RESTful 协议。CoAP 模拟了 HTTP 协议,从用户角度来看,CoAP数据通信本质上是像做一个 HTTP 请求。

使用电池或能量收集供电的设备,CoAP是其最佳选择。CoAP 的一些功能:

  • CoAP 使用 UDP。
  • 由于 CoAP 使用 UDP,因此某些 TCP 函数在 CoAP 中复现。例如,CoAP 区分可确认(需要确认)和不可确认的消息。
  • 请求和响应通过 CoAP 消息异步交换。
  • 所有标头、方法和状态代码都是二进制编码的,这减少了协议开销。
  • 与 HTTP 不同,缓存 CoAP 响应的能力不取决于请求方法,而是响应代码。
  • CoAP 完全解决了对极轻量级协议和永久连接能力的需求。如果您有 Web 背景,则使用 CoAP 相对容易。

MQTT

MQTT是一种开源协议,用于受限设备和低带宽、高延迟网络。它是一种发布/订阅消息传输,极轻量级,非常适合将小型设备连接到受限网络。

MQTT 带宽效率高,数据不可知,且具有连续的会话感知。它有助于最大限度地减少 IoT 设备的资源需求,同时确保可靠性和一定程度的服务等级交付。

MQTT 面向需要从 Internet 上的端到端服务器实现监视或控制的大小型设备网络。它不是为设备到设备的传输而设计的,也不是为"多播"数据到多接收器而设计的。MQTT 非常简单,提供很少的控制选项。

4.IoT 协议比较

下表有多种IoT 协议的介绍。

 
协议 CoAP XMPP RESTful HTTP MQTT
传输 UDP TCP TCP TCP
消息 请求/响应

发布/订阅

请求/响应

请求/响应

发布/订阅

请求/响应

2G、3G、4G 适用性(1000s 节点) 非常好 非常好 非常好 非常好
LLN 适用性(1000s 节点) 非常好 适用 适用 适用
计算资源 10K 内存/闪存 10K 内存/闪存 10K 内存/闪存 10K 内存/闪存
成功案例 公用领域区域网络 消费品的远程管理 智能能源简介 2(本地能源管理、家庭服务) 将企业消息传递扩展到 IoT 应用程序

这些特定 Internet 的 IoT 协议已开发,以满足具有小内存的设备、带宽低和高延迟的网络的要求。

5.比较 Web 和 IoT 协议

下图对比了web协议和IoT协议:

在左侧,Web 应用程序的协议栈可以轻松地生成数百或数千字节的数据开销。相比之下,IoT 协议针对受限设备和网络进行了优化,产生的数据开销要小得多,只有几十个字节。

猜你喜欢

转载自blog.csdn.net/tuxinbang1989/article/details/109784190