5.2 响应

在接收到并解析了一个请求之后,服务端会回应一个CoAP响应,这个响应是通过客户端生成的token来匹配。注意,这和CON消息要与ACK通过Message ID匹配的机制不同。

一个响应是通过CoAP头部的字段来定义为一个响应码,与HTTP状态码类似,CoAP响应码显示尝试理解并满足请求的结果,这些codes在5.9节有完整的定义。响应码的编号是在CoAP头部的字段中设定的,并保存在CoAP响应码表中(12.1.2节)。

          0
          0 1 2 3 4 5 6 7
         +-+-+-+-+-+-+-+-+
         |class|  detail |
         +-+-+-+-+-+-+-+-+
        图9 Response Code结构

上面8-bit的响应码中的高3-bits定义响应的种类。低5-bits没有任何分类作用,他们仅提供一些额外的细节(图 3-3)。

CoAP响应码格式是“c.dd”,这里”c”是一个十进制数,”dd”是两位十进制数。举个例子,”Forbidden”被定义为4.03——这是一个8-bit的值,16进制为0x83(40c20+3)或者十进制131(432+3)。

有3种响应码:

  • 2-success:代表成功收到请求,理解并接收。

  • 4-client Error:客户端错误,代表请求包含了错误的语法或者服务端不能满足请求。

  • 5-server error:服务端错误代表服务器未能响应请求。

响应码被设计成可扩展的:在客户端或者服务端错误中,如果某个端不能识别具体响应码,这个端会将之视为一般响应码(即4.00或5.00)。然而,对于success类,如果某个端不能识别具体响应码,那么这个端只能判断这个请求成功,而不能有更多的操作。在5.9节对响应码的做了详细的描述。响应能被通过多种方式发送,在接下来的小节中有定义。

最后更新于