下面基于rfc7252对coap报文进行分析。
rfc7252对coap的报文头定义如上,8位表示一个字节,可以看到coap协议字节还是比较节省的。
第一个字节的8位,2位表示协议版本号(每个协议都有协议版本号,为了兼容性考虑),在这里rfc7252规定这里必须填01,其他的留给以后的版本。
2位表示消息类型,其实是一个枚举值2^2有四个消息类型.对于这四种消息类型,rfc7252给的回复标准是:
4位的token,结合可选的token确定是否在报文里面携带token信息,也就是说coap协议最多可携带2^4-1的15个字节的token信息
紧接着是1字节的code信息,这里的code也是一个枚举值类型,表明请求类型,类似于http的请求方法,不过与http不同的http采用明文表明请求方法,无论你请求方法是啥,只占用1个字节。有的同学就说了,255个方法是不是有点多了,确实,所以对于这一个字节,协议又把它细分了,前三位和后五位,所以就形成了x.xx的数据结构
2个字节的messgaeid,标示请求和响应的对应关系啊。65535个,用完了再循环呗。
变字节长度的token,结合第一个字节4位的token长度可确定token的字节数。
变长度的option可选配置,有的同学说了,coap不是说是rest的方式请求的吗?那我的方法知道在哪了,uri我放在哪呢?没错就是放在options里面去配置,编码如下。
既然options是变长的,前面爷没有说明option的长度,那它和payload怎么区分边界,在这里,协议规定了ff之后就是payload内容,就是你要传递的业务数据了。
下面以一个请求响应报文说明上面的分析:
至此分解到此结束,coap协议要写的地方还很多,下次再补充吧,欢迎各位大佬斧正!
coapCoAP是6LowPAN协议栈中的应用层协议。该文在详细介绍了CoAP协议的内容、特点和交互模型后,在uIPv6 START KIT无线网络开发套件上,使用Contiki嵌入式操作系统,不仅在浏览器端实现了CoAP协议而且用自己编写的客户端程序实现了CoAP协议,增加了和数据库之间的交互功能,从而实现了在Web界面上不仅可以查看实时数据,还可以查看历史数据的功能。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)