面向IoT的几个协议选择思考
作者:CQITer小编 时间:2018-05-27 01:45
对于使用传感器和保持连接性的IoT系统而言,如何使用这些元素和多种互联网技术相结合呢?
互联网协议并不陌生,但是IoT相关的互联网协议可能是有不同,有些协议被用来辅助塑造系统。TCP/IP协议栈上有多个应用层协议, 每种协议都有自己的优势和限制,了解这些可以帮助开发者为产品做出最好的设计选择。 在选择物联网协议时, 带宽要求、实时性能和内存占用是主要的约束条件。
鉴于IoT 的多样性和复杂性,应用场景上有着诸多的类型:
Consumer versus industrial 消费者 vs 工业
Web services 网络服务
IoT services 物联网服务
Publish/subscribe 发布/订阅
Request/response 请求/响应
......
在设计IoT系统时, 必须考虑这些类别, 清晰的需求和边界确定,几乎是成败的关键。一般地,一个IoT系统大致如此:

图1 IoT(M2M)的一般系统架构
面向接口的设计,被业界广泛的接受,引申到系统的层面,大约是面向协议的设计, 对协议的认知是设计的基础。
互联网协议栈
互联网是所有网络设备的总和, 用来将 IP 包从源路由到目的地。 相比之下, Web只是一个在互联网上运行的应用系统。 网络是一个交流信息工具, 在过去的几十年里, 网络得到了普及和发展, 普通人也能够轻松有效地使用互联网。 例如, 电子邮件,搜索引擎,浏览器,移动应用,以及其他流行的社交媒体。
相对而言, 物联网是让电子设备通过互联网交换信息。 但是这些设备还不能像浏览器和社交媒体那样来促进交流。 物联网也不同于网络,因为物联网设备为了协同工作所需要的速度、规模和功能不同于互联网, 需求千姿百态,这也是物联网定义难以明确的原因之一。
协议栈是互联网和网络的核心,离不开OSI七层开放系统互连的表示,具体可以参见老曹眼中的网络编程基础。 在这里,上三层被分组在一起以简化模型。

图2 OSI 模型简要
我们需要从IoT的角度来快速理解一下OSI层。
下三层:物理层、数据链路层 和网络层
互联网中常用的物理层和数据链路层协议有:
Ethernet (10 Mbps, 100 Mbps, 1 Gbps)
Wi-Fi (802.11b/g/n)
点对点协议(PPP)
GSM, 3G, 4G, LTE 3G, 4G, LTE
但是对IoT而言,采用的无线协议更加丰富,例如 802.15.*等,甚至城域网乃至其他广域网的相关协议也纷纷被引入, 后面单独进行理解。
网络层是互联网生存的地方。 互联网之所以被命名, 是因为它提供了网络之间、物理层之间的连接。 这就是我们找到无处不在 IP 地址的地方。
传输层
在 IP 之上, 互联网有两个传输协议——TCP和UDP。 TCP 用于网络中的交互(电子邮件、网页浏览等) , 甚至被认为 是传输层中唯一的协议。 TCP 提供了逻辑连接的概念, 传输包的确认, 丢失数据包的重传, 以及流量控制。 但是对于IoT系统而言, TCP 可能有点重。 因此, 尽管 UDP 长期以来一直被降级到DNS和 DHCP等网络服务, 现在已经在传感器采集和远程控制领域占据了一席之地。 如果需要对数据进行某种类型的管理, 甚至可以在 UDP 之上编写自己的轻量级协议, 以避免 TCP的开销。
对于语音和视频等实时数据应用, UDP 比 TCP 可能更适合。 TCP 的数据包确认和重传功能对于这些应用可能是无用的开销。 如果一段数据(比如一段口语音频)没有及时到达目的地, 那么重新传输数据包可能意义不大。有时选择TCP是因为它提供了一个持久的连接。 为了实现类似的功能, 必须在 UDP 上面的协议层中实现该特性。
当决定如何将数据从"事物"本地网络转移到一个 IP 网络时, 可以通过网关将两个网络连接起来, 或者可以把这个功能构建在"事物"本身上。 许多微控制器(MCUs)现在都有一个以太网控制器, 这使得这个任务更加容易。
用于物联网的无线协议
虽然大部分物联网依赖于传统的嵌入式开发技术, 但是对始终拥有对连接性的需求,这要求我们不仅对无线方法做出选择, 还要选择相应的通信协议。 因此, 不同的协议都在试图建立为从边缘节点向云服务提供数据通信的基础。 每种协议都希望被看作是对某些类型的数据或数据交换方法的最佳选择。
从计算机网络演进的IoT无线协议



