1.4 物联网与CoAP
CoAP是受限制的应用协议(Constrained Application Protocol)的简称。随着最近几年物联网技术的发展,越来越多的设备接入互联网。据预测未来将有更多的设备需要相互连接,而这些设备的数量将远超人类的总和。在这种大背景下,物联网IoT和M2M技术应运而生。虽然对人们而言,接入互联网显得非常方便,但是对于那些低功耗受限制设备而言接入互联网却异常困难。在当前由PC和智能手机组成的世界里,信息交换多是通过TCP和应用层协议HTTP实现的。但是对于低功耗受限制设备而言,实现TCP和HTTP显然是一个过分而苛刻的要求。为了让低功耗受限制设备可以接入互联网,CoAP应运而生。CoAP是一种应用层协议,它运行于UDP之上而不是像HTTP那样运行于TCP之上。CoAP非常小巧,最小的数据包仅为4字节。
1.4.1 CoAP
CoAP并不能孤立存在,而是TCP/IP协议族的一部分。TCP/IP为人熟知,从字面意思上理解TCP/IP指TCP与IP这两种协议,但实际上TCP/IP是一类协议集合的统称,具体来说TCP/IP包括IP和ICMP、TCP和UDP、TELNET和FTP等。虽然CoAP并没有使用TCP作为传输层协议,但CoAP也属于TCP/IP协议族中的一员。CoAP借鉴了HTTP的大量成功经验,CoAP和HTTP一样均使用请求/响应工作模式。通常由客户端发送CoAP请求,服务器一旦侦听到该请求便会根据请求内容返回响应码和响应内容。图1-6可以很好地说明CoAP请求/响应工作模式的大致流程。虽然CoAP和HTTP有很多相似之处,但是CoAP专门为低功耗受限制设备设计,它比HTTP简单很多。
图1-6 CoAP请求/响应工作模式
1.4.2 RFC文档汇总
俗话说“没有规矩不成方圆”,这些TCP/IP相关协议均由IETF组织讨论并制定,IETF组织是一个坚持开放性和适用性的国际标准化组织,该组织产生的标准化文档被称为RFC(Request For Comment)文档,所有RFC文档完全公开并在互联网上公布。RFC文档不仅记录了协议规范内容,还包括协议的实现和运用的相关信息。RFC文档通过编号的方式组织每个协议的标准化请求,如著名的IP规范由RFC 279规定,而著名的TCP规范则由RFC 793规定,本书讨论的CoAP由RFC 7252规定。RFC编号采用递增方式编号,著名的IP和TCP的编号仅为3位数字,而CoAP的编号已经超过7000。
通过上面的分析不难得出,若需要熟悉并了解CoAP可从RFC文档入手,通过CoAP相关的RFC文档可以了解它的“前世今生”。
1. CoAP核心与扩展协议
CoAP包括核心协议RFC 7252和扩展协议RFC 7641、RFC 6690和RFC 7959等部分,具体内容见表1-2。本书后续章节将结合示例详细解释这几份RFC文档。
表1-2 CoAP核心协议和扩展协议
2. TCP/IP相关RFC文档汇总
CoAP的应用还依赖于其他RFC文档,在这些RFC文档的共同支持下才可以组成完整的CoAP应用。CoAP依赖的RFC文档见表1-3。
表1-3 TCP/IP相关RFC文档汇总