5.7 CoAP选项
CoAP定义了一系列选项用以规范CoAP报文的格式。一个CoAP报文中可以包括多个CoAP选项。CoAP选项是CoAP中最难理解的部分。
5.7.1 选项格式
CoAP选项实例由选项偏移量(Option Delta)、选项长度(Option Length)和选项值(Option Value)组成。CoAP选项的具体格式如图5-13所示。CoAP中不能直接确定选项编号,选项编号必须由上一个选项编号和本次选项偏移量计算得到。
图5-13 选项格式
1.选项偏移量
4位无符号整数。其中0~12用于指示选项的偏移量,13、14和15具有特殊含义。
·13:Option Delta extended区域定义一个8位无符号整数,此时的选项偏移量应为该8位无符号整数+13。
·14:Option Delta extended区域定义一个16位无符号整数,此时的选项偏移量应为该16位无符号整数+269。
·15:保留为将来使用。
选项偏移量描述了当前选项编号与之前选项编号之间的差值,换句话说选项编号可以由当前选项编号与之前的选项编号计算得到。例如,上次选项编号为11(Uri-Path),当前选项偏移量为4,那么当前的选项编号为15(Uri-Query)。
2.选项长度
4位无符号整数。0~12用于指定选项长度,13、14和15具有特殊含义。
·13:Option Length extended区域定义一个8位无符号整数,此时的选项长度应为该8位无符号整数+13。
·14:Option Length extended区域定义一个16位无符号整数,此时的选项长度应为该16位无符号整数+269。
·15:保留为将来使用。
3.选项值
在CoAP中选项值包含四种数据类型——Empty、Opaque、Uint和String。
·Empty:选项值长度为0。
·Opaque:选项值长度不确定。
·Uint:选项值长度为非负整数,该值采用网络字节顺序即大端格式定义。
·String:UTF-8编码字符串格式。
4.选项定义
CoAP选项定义见表5-3。
表5-3 CoAP选项定义
5.7.2 URI相关选项
在CoAP选项中共有4个选项与URI直接相关——Uri-Host、Uri-Port、Uri-Path和Uri-Query。这些参数都可以用于定位服务器资源,CoAP的资源定位规则也符合URL语法,例如:
coap://wsnccoap.org:5683/devices/1234CDEF?limit=10&offset=20
·Uri-Host用于定义服务器名称,此CoAP URI示例中Uri-Host等于“wsnccoap.org”。
·Uri-Port用于定义服务器CoAP服务端口号,此CoAP URI示例中Uri-Port的值为5683。
·Uri-Path用于定义资源在服务器中的相对或绝对位置,在此CoAP URI示例中Uri-PATH等于“devices/1234CDEF”。此时“devices/1234CDEF”被分成了两个Uri-Path:一个