2 受限应用协议CoAP

CoAP协议的交互模型与HTTP的客户端/服务端模型类似。然而,在M2M的交互场景中,一个使用CoAP协议的设备通常既是客户端又是服务端。CoAP中的请求与HTTP协议中的请求相同,是由客户端发起的,请求一个位于服务端的资源(用URI标识),执行一个动作(用Method Code标识)。然后服务端发回一个响应,带有一个响应代码(Response Code),这个响应中有可能也包含一个资源的表现(附带响应格式)。

与HTTP协议不同的是,CoAP的交互是异步的,构建于面向数据报的传输协议,如UDP。交互是通过一个消息层来实现的,消息层提供了可选的可靠性支持(采用指数回退)。CoAP协议中定义了四种类型的消息: CON, NON, ACK和RST。这四种类型的消息中包含有请求和响应标识码,标识着这些消息是请求还是响应。请求可以包含在CON和NON两种类型中,而响应则除了可以包含在CON和NON之中,还可以包含在附带响应的ACK中。

从逻辑上,可以把CoAP协议划分为两层:消息层,用于处理UDP数据包和异步;请求/响应层,使用Method和Response Code,具体见图1。当然,CoAP是一个协议,消息和请求/响应仅仅是其头部特性。

        +----------------------+
        |      Application     |
        +----------------------+
        +----------------------+  \
        |  Requests/Responses  |  |
        |----------------------|  | CoAP
        |       Messages       |  |
        +----------------------+  /
        +----------------------+
        |          UDP         |
        +----------------------+

        图1 CoAP中的抽象层次

最后更新于