物联网的体系结构
目前被广泛认可的物联网参考体系架构分为三层,分别是感知层、网络层和应用层。
感知层:包括二维码标签和识读器、RFID标签和读写器、摄像头、GPS、传感器、M2M终端、传感器网络和传感器网关等,主要功能是识别物体、采集信息。
网络层:首先包括各种通信网络与互联网形成的融合网络,除此之外还包括物联网管理中心、信息中心、云计算平台、专家系统等对海量信息进行智能处理的部分。
应用层:将物联网技术与行业专业技术相结合,实现广泛智能化应用的解决方案集。物联网通过应用层最终实现信息技术与行业的深度融合,实现行业智能化。
就目前国内外物联网的发展来看,并未能够有效地指导整个物联网产业,使之进入快速发展的通道。部分原因在于,该架构对于网络层的描述过于概括,并且网络层本身从语义上也容易让人与互联网协议中的网络层产生混淆,因此一定程度上阻碍了人们对物联网体系架构的认识。从现状来看,目前业界对网络层认识还处于相对粗浅的层次,物联网产业界还没有充分发展网络层中对物联网业务发展起到重大推动作用的物联网支撑平台,大多数应用仍只是把网络层当作物联网数据的传输通道,尚未利用网络层所提供的物联网运营支撑能力和业务支撑能力。
对于物联网体系架构的理解不能仅从网络的视角触发,而应该把物联网当作一个完整的系统来看待,从全局的角度触发,系统地考虑物联网建设与发展过程中,需要涉及的各个环节、所在的层级及它们之间的联系。结合信息流的流向,以及产业关联对象来梳理物联网架构中各个层次,可以将物联网架构分为四个层次,分别是感知及控制层、网络层、平台服务层和应用服务层。
物联网平台是物联网产业链的枢纽,向下接入分散的物联网传感层,汇集传感数据,向上面向应用服务提供商提供应用开发的基础性平台和面向底层网络的统一数据接口,支持具体的基于传感数据的物联网应用。
感知与控制层:通过从传感器、计量器等器件获取环境、资产或者运营状态信息,在进行适当的处理之后,通过传感器传输网关将数据传递出去;同时通过传感器接收网关接收控制指令信息,在本低传递给控制器件达到控制资产、设备及运营的目的。在此层次中,感知及控制器件的管理、传输与接收网关、本低数据及信号处理是重要的技术。
网络层:通过公网或者专网以无线或者有线的通信方式将信息、数据与指令在感知与控制层、平台服务层、应用层服务之间传递,主要由运营商提供的各种广域IP通信网络组成,包括ATM、xDSL、光纤等有线网络,以及GPRS、3G、4G、NB-IoT等移动通信网络。
平台服务层:物联网平台是物联网网络架构和产业链条中的关键环节,通过它不仅实现对终端设备和资产的“管、控、营”一体化,向下连接感知层,向上面向应用服务提供商提供应用开发能力和统一接口,并未各行各业提供通用的服务能力,如数据路由、数据处理与挖掘、仿真与优化、业务流程和应用整合、通信管理、应用开发设备维护服务等。
应用服务层:丰富的应用是物联网的最终目标,未来基于政府、企业、消费者三类群体将衍生出多样化的物联网应用,创造巨大的社会价值。根据企业业务需要,在平台服务层之上建立相关的物联网应用,例如,城市交通情况的分析与预测,城市资产状态监控与分析,环境状态监控、分析与预警(如风力、雨量、滑坡),健康状况监测与医疗方案建议等。
物联网三大协议
实时通信技术作为一项根本性前提,在物联网应用程序的开发工作中扮演着核心角色。想象一下,如果我们能够利用手机与家居环境内的各种小装置进行通信,那么科幻电影中的种种场景将很快变成现实。但如果整个通信过程需要数秒才能完成,那么使用体验无疑会大打折扣。
要说起实时通信技术的发展演变,我们就不能不提即时通讯方案的出现。从历史角度讲,即时通讯产品可以算是最早出现的客户友好型联网实时通信客户端。AOL IM、ICQ以及Jabber正是各类支持实时通信的即时通讯方案中的典型代表。而这一切早在上世纪九十年代就已然出现了。
时至今日,我们开始将着眼点放在开发作用于不同物联网设备之间的通信协议——不过当初构建即时通讯解决方案时积累到的经验仍然适用。目前物闻网设备所广泛使用的三大实时协议包括:XMPP、CoAP以及MQTT。有趣的是,其中的XMPP早在Jabber时代就已经作为一套开放即时通讯协议存在了。
XMPP
XMPP的全称为可扩展通讯与表示协议。这项立足于XML的TCP通信协议能够以近实时方式在两个甚至更多联网功能实体之间进行结构化数据交换。XMPP当中的现成功能包括表示信息以及联系人名单维护。尽管这两项功能最初都是针对即时通讯需求设计而成,但它们在物联网应用程序当中仍然能够起到不错的效果。鉴于其出色的开放特性并以XML为基础,XMPP已经被扩展至各类公共订阅系统当中——而这也恰好适合物联网应用的实际需求。
利用XMPP作为物联网通信协议,我们能够享受到几大突出优势。首先就是XMPP的分散特性。XMPP的运作方式与电子邮件比较相似,游走于由传输代理构建而成的分布式网络当中,而非高度依赖于单一中央服务器或者代理节点(CoAP与MQTT皆属于这种情况)。与电子邮件一样,每个人都能够轻松运行属于自己的XMPP服务器,这就使得设备制造商以及API供应方能够创建并管理自己的设备网络体系。而由于大家都有能力运行自己的服务器,所以出于安全考虑,我们可以在必要时利用内置TLS加密机制将该服务器隔离在企业内网的安全验证协议之下。
遗憾的是,XMPP也存在着一些弊端。其最大的问题之一就是缺少端到端加密机制。尽管在不少场景之下,这类加密机制基本算是可有可无,但归根结底大多数物联网设备仍然需要利用加密来保障安全。端到端加密机制的缺失无疑会令物联网设备制造商陷入被动当中。
XMPP的另一个问题在于不具备服务质量(简称QoS)控制。在物联网领域,确保消息交付的重要性甚至比即时通讯领域还要高。如果大家的警报系统没能切实收到相关信息并正确触发,那么接下来的后续影响可能会非常可怕。
CoAP
CoAP的全称为受限应用协议,其开发目的在于允许资源相对有限的设备利用UDP而非TCP通过互联网实现通信。开发人员可以同任意支持CoAP的设备进行交互,具体方式与采用传统REST API的设备完全一致。CoAP的主要适用场景包括低功耗传感器以及需要通过互联网加以控制的设备。
CoAP是一种简单的请求/响应协议(与REST非常相似),且遵循传统的客户端/服务器模式。客户端可以面向资源发出GET、PUT、POST以及DELETE等请求。CoAP数据包采用位字段以最大限度提升内存利用效率,且经常将字符串映射至整数以降低数据包在设备内部以及网络中传输时所占用的带宽。除了数据包体积极度小巧之外,CoAP的另一大优势在于其采用UDP;数据报文使得CoAP能够在各类基于数据包的技术之上起效——例如短信。
所有CoAP消息皆可被标记为“确认”或者“未确认”,并作为应用层级的QoS机制。尽管SSL/TLS加密无法在UDP之上实现,但CoAP使用数据传输层安全(简称DTLS)作为替代——其可以算是TLS的TCP版本。默认加密级别相当于一条3072位的RSA密钥。尽管包含这些强大的安全保障能力,CoAP仍然能够运行在内存仅为10 KB的微控制器当中。
CoAP的弊端之一在于,它属于一对一协议。尽管我们可以通过扩展方式实现组广播,但这种广播能力并非原生存在。除此之外,CoAP的另一大缺陷在于不提供公共订阅消息队列。
MQTT
MQTT的全称为消息队列遥测传输,这是一种公共订阅消息收发协议。与CoAP类似,它在设计当中同样考虑到运行设备资源有限的状况。MQTT采用轻量级数据包结构设计,旨在最大程度节约内存使用量及运行功耗。联网设备以订阅方式监听托管在MQTT代理端的话题。每一次在其它设备或者服务向该话题发送数据,所有参与订阅的设备都将自动获取到这一更新信息。
MQTT的最大优势在于其公共订阅消息队列机制以及多对多广播能力。有了指向MQTT代理端的长效TCP连接的支持,以有限带宽进行消息收发变得简单而轻松。
MQTT的短板在于,其始终存在的连接限制了设备进入休眠状态的整体时长。如果相关设备在运行中多数处于休眠状态,我们不妨优先选择另一种MQTT协议——MQTT-S,其利用UDP取代原始协议中的TCP。
MQTT的另一大弊端是缺少基础协议层面的加密机制。MQTT被设计为一种轻量化协议,而内置加密的方式会给传输连接增加很大负担。虽然我们也能够在应用程序层级添加定制化安全机制,但这可能需要进行大量的调整工作。