CoAP协议格式详解_第1页
CoAP协议格式详解_第2页
CoAP协议格式详解_第3页
CoAP协议格式详解_第4页
CoAP协议格式详解_第5页
已阅读5页,还剩3页未读 继续免费阅读

CoAP协议格式详解.docx 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CoAP是受限制的应用协议(ConstrainedApplicationProtocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。1CoAP协议综述和其他TCPIP协议簇中的协议一样,CoAP协议总是以“头”的形式出现在负载之前,而负载和CoAP头之间使用单字节0xFF分离。学习CoAP协议最好的方法便是结合RFC文档,详细分析CoAP协议报文格式的每一部分,便是CoAP协议报文结构示意图。图1.1CoAP协议报文结构示意图2CoAP协议报文各部分【Ver】版本编号,指示CoAP协议的版本号。类似于HTTP1.0HTTP1.1。版本编号占2位,取值为01B。【T】报文类型,CoAP协议定了4种不同形式的报文,CON报文,NON报文,ACK报文和RST报文。【TKL】CoAP标识符长度。CoAP协议中具有两种功能相似的标识符,一种为MessageID(报文编号),一种为Token(标识符)。其中每个报文均包含消息编号,但是标识符对于报文来说是非必须的。【Code】功能码/响应码。Code在CoAP请求报文和响应报文中具有不同的表现形式,Code占一个字节,它被分成了两部分,前3位一部分,后5位一部分,为了方便描述它被写成了c.dd结构。其中0.XX表示CoAP请求的某种方法,而2.XX、4.XX或5.XX则表示CoAP响应的某种具体表现。【MessageID】报文编号【Token】标识符具体内容,通过TKL指定Token长度。【Option】报文选项,通过报文选项可设定CoAP主机,CoAPURI,CoAP请求参数和负载媒体类型等等。【11111111B】CoAP报文和具体负载之间的分隔符。3Code部分详解Code部分被分成了两部分,为了便于阅读,Code被描述为c.dd形式。具体内容可参考RFC7252#12.1.1MethodCodes3.1请求在CoAP请求中,Code被定义为CoAP请求方法,这些方法有GET、POST、PUT和DELETE,这些方法和HTTP协议非常相似。【0.01】GET方法——用于获得某资源【0.02】POST方法——用于创建某资源【0.03】PUT方法——用于更新某资源【0.04】DELETE方法——用于删除某资源3.2响应在CoAP响应中,Code被定义为CoAP响应码,类似于HTTP200OK等等。【2.01】Created【2.02】Deleted【2.03】Valid【2.04】Changed【2.05】Content。类似于HTTP200OK【4.00】BadRequest请求错误,服务器无法处理。类似于HTTP400。【4.01】Unauthorized没有范围权限。类似于HTTP401。【4.02】BadOption请求中包含错误选项。【4.03】Forbidden服务器拒绝请求。类似于HTTP403。【4.04】NotFound服务器找不到资源。类似于HTTP404。【4.05】MethodNotAllowed非法请求方法。类似于HTTP405。【4.06】NotAcceptable请求选项和服务器生成内容选项不一致。类似于HTTP406。【4.12】PreconditionFailed请求参数不足。类似于HTTP412。【4.15】UnsupporConten-Type请求中的媒体类型不被支持。类似于HTTP415。【5.00】InternalServerError服务器内部错误。类似于HTTP500。【5.01】NotImplemented服务器无法支持请求内容。类似于HTTP501。【5.02】BadGateway服务器作为网关时,收到了一个错误的响应。类似于HTTP502。【5.03】ServiceUnavailable服务器过载或者维护停机。类似于HTTP503。【5.04】GatewayTimeout服务器作为网关时,执行请求时发生超时错误。类似于HTTP504。【5.05】ProxyingNotSupported服务器不支持代理功能。4Option部分详解CoAP支持多个Option,CoAP的Option的表示方法比较特殊,采用增量的方式描述,细节可参考RFC7252#3.1图4.1CoAP部分Option定义一般情况下Option部分包含OptionDelta、OptionLength和OptionValue三部分。【OptionDelta】表示Option的增量,当前的Option的具体编号等于之前所有OptionDelta的总和。【OptionLength】表示OptionValue的具体长度。【OptionValue】表示Option具体内容CoAP中所有的Option都采用编号的方式,这些Option及编号的定义如下图所示。图4.2Option编号内容在这些option中,Uri-Host、Uri-Port、Uri-Path和Uri-Query等和资源“位置”和参数有关。【3】Uri-Host:CoAP主机名称,例如【7】Uri-Port:CoAP端口号,默认为5683【11】Uri-Path:资源路由或路径,例如\temperature。资源路径采用UTF8字符串形式,长度不计第一个"\"。【15】Uri-Query:访问资源参数,例如?value1=1&value2=2,参数与参数之间使用“&”分隔,Uri-Query和Uri-Path之间采用“?”分隔。在这些option中,Content-Format和Accept用于表示CoAP负载的媒体格式【12】Content-Format:指定CoAP复杂媒体类型,媒体类型采用整数描述,例如application/json对应整数50,application/octet-stream对应整数40。【17】Accept:指定CoAP响应复杂中的媒体类型,媒体类型的定义和Content-Format相同。CoAP协议中支持多个Option,例如第一个OptionDelta=11,表示该Option表示Uri-Path(11)第二个OptionDelta=1,表示该Option=1+11,表示Content-Format(12)第三个OptionDelta=3,表示该Option=3+1+11,表示Uri-Query(15)CoAP采用这样的方式表示多个Option,而每种Option都可以在HTTP协议中找到对应项。5Content-Format描述CoAP支持多种媒体类型,具体可参考RFC7252#12.3。从下图的信息可以发现,CoAP协议中关于媒体类型的定义比较简单,未来应该会根据实际情况扩展。图5.1Content-Format编号内容【text/plain】编号为0,表示负载为字符串形式,默认为UTF8编码。【application/link-format】编号为40,CoAP资源发现协议中追加定义,该媒体类型为CoAP协议特有。【application/xml】编号为41,表示负载类型为XML格式。【application/octet-stream】编号为42,表示负载类型为二进制格式。【application/exi】编号为47,表示负载类型为“精简XML”格式。(翻译不一定准确)另外,还有一种格式也北IANA认定,也会在CoAP协议中广泛使用那便是CBOR格式,该格式可理解为二进制JSON格式。【applicaiton/cbor】编号为60。6示例该示例来自于RFC7252。【流程描述】CoAP客户端通过GET方法从Server端获得温度传感器数据,CoAPURI如下coap:///temperautreCoAP请求采用CON报文,Server接收到CON报文必须返回一个ACK报文。CoAP请求采用0.01GET方法,若操作成功CoAPServer返回2.05Content,相当于HTTP200OK。请求和响应的MID必须完全相同,此处为0x7d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论