设为首页 收藏本站
开启辅助访问 快捷导航
菜单
猿人部落 主页 资讯 查看内容

物联网协议CoAP

2019-7-26 17:53 发布者: 晚起的虫子1 评论 0 查看 1293
版权声明:署名,允许他人基于本文举行创作,且必须基于与原先允许协议类似的允许协议分发本文 (Creative Commons)
知识共享允许协议 版权声明:署名,允许他人基于本文举行创作,且必须基于与原先允许协议类似的允许协议分发本文 (Creative Commons)

文章目次

    • 一、CoAP协议简介
    • 二、CoAP协议特点
    • 三、CoAP协议消息范例
    • 四、CoAP消息格式
      • 4.1 消息头(HEAD)
      • 4.2 token(可选)用于将相应与哀求匹配
      • 4.3 option(可选,0个大概多个)
      • 4.4 payload(可选)
    • 五、CoAP的Code哀求码和相应码
      • 5.1 哀求码(requests)
      • 5.2 相应码(responses)
    • 六、CoAP的URL

一、CoAP协议简介

CoAP(Constrained Application Protocol)是一种在物联网天下的类web协议,它的详细规范界说在RFC 7252。CoAP名字翻译来就是“受限应用协议”,顾名思义,使用在资源受限的物联网装备上。物联网装备的ram,rom都通常非常小,运行TCP和HTTP每每是不可以担当的。

二、CoAP协议特点

  1. CoAP协议网络传输层由TCP改为UDP。
  2. 它基于REST,server的资源所在和互联网一样也有类似url的格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化。
  3. CoAP是二进制格式的,HTTP是文本格式的,CoAP比HTTP更加紧凑。
  4. 轻量化,CoAP最小长度仅仅4B,一个HTTP的头都几十个B了。
  5. 支持可靠传输,数据重传,块传输。
  6. 支持IP多播,即可以同时向多个装备发送哀求。
  7. 非长毗连通讯,实用于低功耗物联网场景。

三、CoAP协议消息范例

CoAP协议有4种消息范例
CON—— 必要被确认的哀求,如果CON哀求被发送,那么对方必须做出相应。这有点像TCP,对方必须给确认收到消息,用以可靠消息传输。
NON—— 不必要被确认的哀求,如果NON哀求被发送,那么对方不必做出回应。这实用于消息会重复频仍的发送,丢包不影响正常利用。这个和UDP很像,用以不可靠消息传输。
ACK—— 应答消息,对应的是CON消息的应答。
RST—— 复位消息,可靠传输时间吸收的消息不认识或错误时,不能回ACK消息,必须回RST消息。

四、CoAP消息格式

在这里插入图片形貌

4.1 消息头(HEAD)

第一行是消息头,必须有,固定4个byte。
Ver : 2bit, 版本信息,当前是必须写0x01。
T: 2bit, 消息范例,包罗 CON, NON, ACK, RST这4种。
TKL: 4bit,token长度, 当前支持0~8B长度,其他长度保存将来扩展用。
Code:8bit,分成前3bit(0~7)和后5bit(0~31),前3bit代表范例。(前 3bit和后5bit用小数点分隔体现)

0.00 Indicates an Empty message
0.01-0.31 Indicates a request. 
1.00-1.31 Reserved
2.00-5.31 Indicates a response. 
6.00-7.31 Reserved

Message ID:16bit, 代表消息MID,每个消息都有一个ID ,重发的消息MID稳固。

4.2 token(可选)用于将相应与哀求匹配

token值为0到8字节的序列。 ( 每条消息必须带有一个标志, 纵然它的长度为零)。 每个哀求都带有一个客户端天生的token, 服务器在任何效果相应中都必须对其举行回应。token类似消息ID,用以标志消息的唯一性。token还是消息安全性的一个设置,使用全8字节的随机数,使伪造的报文无法得到验证通过。

4.3 option(可选,0个大概多个)

哀求消息与回应消息都可以0~多个options。 紧张用于形貌哀求大概相应对应的各个属性,类似参数大概特性形貌,好比是否用到署理服务器,目标主机的端口等。

CoAP界说了很多option。消息中的每个option都有:option编号、option值长度、option值。 消息中的option号(TLV格式中的T)并不是直接指定option编号的。全部的option必须按实际option编号的递增分列,某一个option和上一个option之间的option编号差值为delta;每一个TLV格式的option号都是delta值(数据包中第一个option的delta即它的option编号)。同一个编号的option再次出现时,delta的值为0。

在这里插入图片形貌

一个option之中的各个字段的寄义如下:

  • Option Delta
    体现Option的增量,当前的Option的详细编号。 4-bit无符号整型。值0-12代表option delta。别的3个值作为特殊情况保存:
    • 当值为13:有一个8-bit无符号整型(extended)跟随在第一个字节之后,本option的实际delta是这个8-bit值加13。
    • 当值为14:有一个16-bit无符号整型(网络字节序)(extended)跟随在第一个字节之后,本option的实际delta是这个16-bit值加269。
    • 当值为15:为payload标识符而保存。如果这个字段被设置为值15,但这个字节不是payload标识符,那么必须看成消息格式错误来处置惩罚。
  • Option Length
    体现Option Value的详细长度。4-bit无符号整数。值0-12代表这个option值的长度,单位是字节。别的3个值是特殊保存的:
    • 当值为13:有一个8-bit无符号整型跟随在第一个字节之后,本option的实际长度是这个8-bit值加13。
    • 当值为14:一个16-bit无符号整型(网络字节序)跟随在第一个字节之后,本option的实际长度是这个16-bit值加269。
    • 当值为15:保存为将来使用。如果这个字段被设置为值15,必须看成消息格式错误来处置惩罚。
  • Option Value 共(option Length)个字节。
    option值字段的长度和格式取决于详细的option,有大概界说变长的值。全部的option都接纳编号的方式,这些option及编号的界说如下图所示。

在这里插入图片形貌

在这些option中,Uri-Host、Uri-Port、Uri-Path和Uri-Query等和资源“位置”和参数有关。
  【3】Uri-Host:CoAP主机名称,比方iot.baidu.com
  【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,比方:
  第一个Option Delta=11,体现该Option体现Uri-Path(11)
  第二个Option Delta=1,体现该Option=1+11,体现Content-Format(12)
  第三个Option Delta=3,体现该Option=3+1+11,体现Uri-Query(15)
  CoAP接纳如许的方式体现多个option,而每种option都可以在HTTP协议中找到对应项。

4.4 payload(可选)

实际携带数据内容, 如有, 前面加payload标识符“0xFF”,如果没有payload标识符,那么就代表这是一个0长度的payload。如果存在payload标识符但厥后跟随的是0长度的payload,那么必须看成消息格式错误处置惩罚。

五、CoAP的Code哀求码和相应码

Code部分被分成了两部分,为了便于阅读,Code被形貌为c.dd情势。

5.1 哀求码(requests)

在CoAP哀求中,Code被界说为CoAP哀求方法,这些方法有GET、POST、PUT和DELETE,这些方法和HTTP协议非常相似。

【0.01】GET方法——用于得到某资源
【0.02】POST方法——用于创建某资源
【0.03】PUT方法——用于更新某资源
【0.04】DELETE方法——用于删除某资源

5.2 相应码(responses)

在CoAP相应中,Code被界说为CoAP相应码,类似于HTTP 200 OK等等。

【2.01】Created
【2.02】Deleted
【2.03】Valid
【2.04】Changed
【2.05】Content。类似于HTTP 200 OK
【4.00】Bad Request 哀求错误,服务器无法处置惩罚。类似于HTTP 400。
【4.01】Unauthorized 没有范围权限。类似于HTTP 401。
【4.02】Bad Option 哀求中包罗错误选项。
【4.03】Forbidden 服务器拒绝哀求。类似于HTTP 403。
【4.04】Not Found 服务器找不到资源。类似于HTTP 404。
【4.05】Method Not Allowed 非法哀求方法。类似于HTTP 405。
【4.06】Not Acceptable 哀求选项和服务器天生内容选项差异等。类似于HTTP 406。
【4.12】Precondition Failed 哀求参数不敷。类似于HTTP 412。
【4.15】Unsuppor Conten-Type 哀求中的媒体范例不被支持。类似于HTTP 415。
【5.00】Internal Server Error 服务器内部错误。类似于HTTP 500。
【5.01】Not Implemented 服务器无法支持哀求内容。类似于HTTP 501。
【5.02】Bad Gateway 服务器作为网关时,收到了一个错误的相应。类似于HTTP 502。
【5.03】Service Unavailable 服务器过载大概维护停机。类似于HTTP 503。
【5.04】Gateway Timeout 服务器作为网关时,实验哀求时发生超时错误。类似于HTTP 504。
【5.05】Proxying Not Supported 服务器不支持署理功能。

六、CoAP的URL

  • CoAP的url和HTTP的有很相似的地方,开头是“coap”对应“http”大概“coaps”对应“https”。
  • HTTP的默认端口是tcp 80,CoAP的默认端口是udp 5683(coaps是5684)。
  • 比方:coap://machine.address:5683/sensors/temperature


路过

雷人

握手

鲜花

鸡蛋
收藏 邀请
上一篇:react-native学习总结与部分报错提示下一篇:物联网卡拉开智能家居变革序幕

相关阅读

一周热门

头条攻略!

日排行榜

相关分类