基于REST
架构的COAP
协议是6LowPAN
协议栈中的应用层协议,可运行在内存受限和计算能力有限的嵌入式设备中,并具有请求响应工作模式和可靠的数据传输性能,在物联网领域中具有极大的发展潜力。
6LowPAN
6LowPAN
作为一种新型的无线传感器网络技术,基于和ZigBee
技术相同的IEEE 802.15.4
标准,具有和IPv6
互联网兼容的特点,成为人们研究和关注的热点之一。
6LowPAN
技术可以让每个传感器节点拥有独一无二的IPv6
地址,便于无线传感器网络与IPv6
互联网的融合,从而实现无线传感器网络和互联网络的无缝连接,方便用户远程对传感器节点进行访问和控制。
COAP
在6LowPAN
协议栈中,基于REST
架构的COAP
协议是其应用层协议,其架构如下图所示:
为了利用UDP
协议占用硬件资源少、支持多播等优点,克服其数据传输不可靠的缺点,COAP
采用了双层架构:
Transaction
层负责处理节点间的信息交换,同时增加了对多播的支持。Request/Response
层用来传输对资源进行操作的请求和响应信息,其REST
架构也是基于该层。
这种双层方式使得COAP
协议在没有采用TCP
协议的情况下也可以实现数据的可靠传输。
目前Contiki
和Tiny OS
这两大开源的物联网操作系统实现了COAP
服务器部分,可以将代码移植到嵌入式硬件设备中。
COAP应用
COAP
应用的一般架构如下图所示。图中,每个传感器节点实际就是一个COAP
服务器,传感器上的每一个硬件资源被描述为一个URL
,例如coap://[aaaa::1]/led
表示IPv6地址为aaaa::1
的传感器节点上的led
硬件资源。用户可以通过get
、put
、post
和delete
这四种方式对传感器节点上的硬件资源进行访问或控制。
上图中的RPL
是低功耗有损网络IPv6
路由协议,该协议能够让众多的传感器节点实现点对点通信,从而组成无线传感器网络。边界路由器是6LowPAN
无线传感器网络与IPv6
互联网络的桥梁,其作用是实现无线传感器网络的数据包和IP
数据包之间的相互转换。
COAP服务器
COAP
服务器的软件架构如下图所示,该软件架构移植了Contiki
操作系统。
图中,uip6
是一个简易的IPv6
网络协议栈,为嵌入式设备融入IPv6
互联网提供了条件。
由于最大MTU
、MAC
层路由等原因,IPv6
不能直接运行在IEEE 802.15.4 MAC
层之上,图中的6LowPAN
作为适配层同时提供对上下两层的支持。该层一方面将上层的IPv6
数据包进行头部压缩和分片,传输至IEEE 802.15.4
协议栈中,另一方面将从IEEE 802.15.4
协议栈中接收到的数据包进行重组,传输至IPv6
的网络层。
边界路由器
边界路由器的硬件设计如下图所示。串口用于微处理器和openWRT
路由器之间的数据交互。微处理器中移植了Contiki
操作系统,并在该操作系统下完成了边界路由器和6LowPAN
协议栈相关程序设计。
openWRT
是一种嵌入式Linux
系统,该系统移植了libcoap
和链接服务器的代码,负责串口数据和IPv6
互联网数据的交换和路由。
边界路由器中的微处理器和openWRT
路由器之间的通讯采用了SLIP
协议。SLIP
协议实现了在串行通信线路上运行TCP/IP
协议及其应用服务的功能。