CoAP协议之初探(一)

CoAP 是一个基于 REST 模型的网络传输协议。主要用于轻量级 M2M 通信。由于物联网中的很多设备都是资源受限型的,即只有少量的内存空间和有限的计算能力,所以传统的 HTTP 协议应用在物联网上就显得过于庞大而不适用,CoAP 应运而生。

本文介绍物联网平台支持的CoAP协议规范;

1.概念

支持 RFC 7252 Constrained Application Protocol协议,更多信息,请参见RFC 7252

2.协议内容

CoAP是一个完整的二进制应用层协议,消息格式紧凑,默认运行在UDP上。

一个CoAP资源可以被一个URI所描述,例如一个设备可以测量温度,那么这个温度传感器的URI被描述为:CoAP://machine.address:5683/sensors/temperature。请注意,CoAP的默认UDP端口号为5683

3.CoAP头

  • 【Ver】版本编号。

  • 【T】报文类型,CoAP协议定了4种不同形式的报文,CON报文,NON报文,ACK报文和RST报文。

  • 【TKL】CoAP标识符长度。CoAP协议中具有两种功能相似的标识符,一种为Message ID(报文编号),一种为Token(标识符)。其中每个报文均包含消息编号,但是标识符对于报文来说是非必须的。

  • 【Code】功能码/响应码。Code在CoAP请求报文和响应报文中具有不同的表现形式,Code占一个字节,它被分成了两部分,前3位一部分,后5位一部分,为了方便描述它被写成了c.dd结构。其中0.XX表示CoAP请求的某种方法,而2.XX、4.XX或5.XX则表示CoAP响应的某种具体表现。

  • 【Message ID】报文编号。

  • 【Token】标识符具体内容,通过TKL指定Token长度。

  • 【Option】报文选项,通过报文选项可设定CoAP主机,CoAP URI,CoAP请求参数和负载媒体类型等等。

  • 【1111 1111B】CoAP报文和具体负载之间的分隔符。

4.方法

POST、GET、PUT、DELETE

5.数据类型

  • 【text/plain】 编号为0,表示负载为字符串形式,默认为UTF8编码。

  • 【application/link-format】编号为40,CoAP资源发现协议中追加定义,该媒体类型为CoAP协议特有。

  • 【application/xml】编号为41,表示负载类型为XML格式。

  • 【application/octet-stream】编号为42,表示负载类型为二进制格式。

  • 【application/exi】编号为47,表示负载类型为“精简XML”格式。

  • 【applicaiton/cbor】编号为50,可以理解为二进制JSON格式。

6.消息类型

  • CON:需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。

  • NON:不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。

  • ACK:应答消息,接受到CON消息的响应。

  • RST:复位消息,当接收者接收到的消息包含一个错误,接收者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。

7.通道安全

使用 DTLS v1.2保证通道安全,更多信息,请参见DTLS v1.2

猜你喜欢

转载自blog.csdn.net/Swallow_he/article/details/112362621