CoAP协议

CoAP协议

1 CoAP协议综述

​ 和其他TCP/IP协议簇中的协议一样,CoAP协议总是以的形式出现在负载(数据)之前,而负载和CoAP头之间使用单字节0xFF分离。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hz7rkyEi-1618999611847)(C:\Users\17312\AppData\Roaming\Typora\typora-user-images\image-20210421161443418.png)]

ver版本编号

  • 表示CoAP协议的版本号,类似于HTTP1.0/HTTP1.1

  • 版本编号占2位 0b01 二进制表示格式01

T报文类型,CoAP协议定了4种不同形式的报文

  • CON0b00 ——需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。(重要的消息)
  • NON0b01 ——不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。(不太重要的消息)
  • ACK0b10 ——应答消息,接受到CON消息的响应。(回复信息)
  • RST0b11 ——复位消息,当接收者接受到的消息包含一个错误,接受者解析消息或者不再关心发送者发送的内容,那么复位消息将会被发送。(拒绝信息)

TKLToken长度 CoAP标识符长度

  • 标识符对于报文来说是非必须的
  • Token是用来标记同一个请求和回复的。(确认请求和响应是正确对应的)
  • 4-bit无符号整型。表示变长的Token字段(0-8字节)的长度。长度9-15是保留的,不能设置长度为9-15。如果设置了长度为9-15,必须被当作消息格式错误来处理

Code列代码

  • 8-bit无符号整型。拆分为3-bit的分类信息和5-bit详细信息

  • 写作”c.dd”。c是高3位(Class)3-bit长,从0到7,dd是低5位(Detail)5-bit长,从00到31。

  • 信息c可以代表是一个请求(0)、一个成功的响应(2)、一个客户端错误响应(4)、或者一个服务端错误响应(5)。

  • 000 00000  //前面三位是整数,后面五位表示的是小数
    
    • 对于请求方法,有GET,POST,PUT,DELETE
    	 +------+--------+-------------+                       
         | Code | Name   |  	bit	   |                        
         +------+--------+-------------+                        
         | 0.01 | GET    | [000 00001] |                        
         | 0.02 | POST   | [000 00010] |                        
         | 0.03 | PUT    | [000 00011] |                        
         | 0.04 | DELETE | [000 00100] |                        
         +------+--------+-------------+  
    
    • 对于响应消息
       +------+------------------------------+-----------------------------+ 
       | Code | Description                  |	             bit           |
       +------+------------------------------+-----------------------------+
       | 2.01 | Created   资源已创建                           | [010 00001] | 
       | 2.02 | Deleted   已删除资源                           | [010 00010] |
       | 2.03 | Valid  资源未更新,执行缓存                      | [010 00011] |
       | 2.04 | Changed   资源已更新                           | [010 00100] |
       | 2.05 | Content   请求已执行                           | [010 00101] |
       | 4.00 | Bad Request 请求错误 服务器无法处理              | [100 00000] |
       | 4.01 | Unauthorized 客户端无操作权限                   | [100 00001] | 
       | 4.02 | Bad Option  请求包含一个或多个错误选项            | [100 00010] |
       | 4.03 | Forbidden 服务器拒绝请求                        | [100 00011] | 
       | 4.04 | Not Found  服务器无法找到地址资源                | [100 00100] | 
       | 4.05 | Method Not Allowed  客户端请求非法              | [100 00101] | 
       | 4.06 | Not Acceptable  请求选项和服务器生成内容选项不一致 | [100 00110] | 
       | 4.12 | Precondition Failed 请求参数不足               | [100 01100] | 
       | 4.13 | Request Entity Too Large                     | [100 01101] |  
       | 4.15 | Unsupported Content-Format 不支持请求中的类型   | [100 01111] |  
       | 5.00 | Internal Server Error 服务器内部错误            | [101 00000] |
       | 5.01 | Not Implemented 服务器无法支持请求内容           | [101 00001] | 
       | 5.02 | Bad Gateway                                   | [101 00010] |  
       | 5.03 | Service Unavailable 服务器过载或者维护停机        | [101 00011] | 
       | 5.04 | Gateway Timeout                               | [101 00100] | 
       | 5.05 | Proxying Not Supported 服务器不支持代理功能      | [101 00101] | 
       +------+------------------------------+------------------------------+ 
    
    

MessageID报文编号

  • 16-bit无符号整型,网络字节序

  • 用于客户端和服务端建立请求和响应报文之间的一一对应关系,起到报文确认的作用。

  • 和Token类似,用来联系一个对应的请求和响应

  • 一组对应的CoAP请求和CoAP响应使用相同的MessageID,在同一次会话中ID保持不变

  • 此次会话结束,ID会被回收再利用

  • MessageID可以弥补UDP传输方式带来的不可靠性

Token标签

  • 长度由TKL定义,可以是1字节,2字节或者4字节
  • 通常用于应用确认

Options选项

  • CoAP请求或响应中可以携带一组或多组Options
  • 功能类似于HTTP中的请求头

0xFF分隔符

  • 类似于HTTP中的请求空行
  • 用于分割头部内容和具体数据(负载)

Payload负载

  • 真正有用的用于交互的数据

  • 支持二进制、文本、XML、JSON、CBOR等

  • 常用媒体类型

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jFKCztvA-1618999611849)(C:\Users\17312\AppData\Roaming\Typora\typora-user-images\image-20210421180354982.png)]

2 MQTT和CoAP的区别

  • MQTT更开放,数据内容由用户自己决定,CoAP协议有帮助客户理解的标签信息

  • MQTT是长连接,而CoAP是一次单独通信

  • MQTT是多对多,COAP是单对单通信

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值