Skip to main content

7. Discovery (发现)

7.1. Service Discovery (服务发现)

作为发现CoAP服务器提供的服务的一部分, 客户端必须了解服务器使用的端点.

客户端通过 (知道或) 学习引用服务器命名空间中资源的URI来发现服务器. 或者, 客户端可以使用组播CoAP (见第8节) 和"All CoAP Nodes"组播地址来查找CoAP服务器.

除非"coap"或"coaps" URI中的端口子组件指示CoAP服务器所在的UDP端口, 否则假定服务器可以在默认端口访问.

提供资源发现资源的服务器必须支持CoAP默认端口号5683 (见下面的第7.2节), 并且应该支持提供对其他资源的访问. 服务器可以支持用于资源发现和提供对其他资源的访问的DTLS保护的CoAP的默认端口号5684. 此外, 可以在其他端口托管其他端点, 例如, 在动态端口空间中.

实现注意: 当CoAP服务器由6LoWPAN节点托管时, 如果它还支持[RFC4944]和[RFC6282]中定义的61616-61631压缩UDP端口空间中的端口号, 则头部压缩效率会得到改善. (请注意, 由于其UDP端口与默认端口不同, 它与默认端口的服务器是不同的端点.)

7.2. Resource Discovery (资源发现)

CoAP端点提供的资源的发现在机器对机器应用中极其重要, 其中循环中没有人类, 静态接口会导致脆弱性. 为了在CoRE环境中最大化互操作性, CoAP端点应该支持[RFC6690]中描述的可发现资源的CoRE链接格式, 除非需要完全手动配置. 由服务器决定哪些资源是可发现的 (如果有).

7.2.1. 'ct' Attribute ('ct' 属性)

本节定义了一个新的Web链接[RFC5988]属性, 用于与[RFC6690]一起使用. 内容格式代码"ct"属性提供了关于此资源返回的内容格式的提示. 请注意, 这只是一个提示, 它不会覆盖通过实际请求资源表示获得的CoAP响应的Content-Format选项. 该值采用十进制ASCII整数的CoAP标识符代码格式, 并且必须在0-65535范围内 (16位无符号整数). 例如, "application/xml"将表示为"ct=41". 如果不存在内容格式代码属性, 则无法假设类型. 内容格式代码属性可以包括以空格分隔的内容格式代码序列, 表示多种内容格式可用. 属性值的语法在图12的产生式"ct-value"中总结, 其中"cardinal", "SP"和"DQUOTE"的定义如[RFC6690]中所示.

ct-value =  cardinal
/ DQUOTE cardinal *( 1*SP cardinal ) DQUOTE

图 12