深度解读设备的“万能语言”HarmonyOS的分布式软总线能力 (2)

深度解读设备的“万能语言”HarmonyOS的分布式软总线能力

3. 软总线协议COAP

互联网的WEB应用无处不在,很多依赖于REST协议架构。为在大多的受限节点上(如RAM和ROM很有限的8位单片机)及受限网络上(如6LoWPAN)也能支持REST,工程师们着手处理“受限制的restful环境”,即CoRE。如6LoWPAN的受限网络支持将IPv6数据分成小包,但极大降低了传输效率。

CoAP(Constrained Application Protocol)的主要目标之一是设计一个通用的Web协议,保持非常低的开销,以满足受限环境的特殊要求,如能源、楼宇自动化或其它M2M应用。实现REST的一个通用HTTP子集,针对M2M应用做了简化,而非盲目压缩HTTP。COAP协议可很容易转换为HTTP,方便和现有WEB体系转化,同时还能满足诸如内置发现、组播支持和异步消息传输等。

3.1 COAP协议特征

属于一种应用层协议,运行于UDP协议之上而不是像HTTP那样运行于TCP之上。

1) COAP协议网络传输层由TCP改为UDP;

深度解读设备的“万能语言”HarmonyOS的分布式软总线能力

2) 基于REST,server的资源地址也类似URL格式,客户端同样有POST,GET,PUT,DELETE方法来访问server,对HTTP做了简化;

3) COAP是二进制格式,HTTP是文本格式,COAP比HTTP更加紧凑;

4) 小巧、轻量化,最小长度仅仅4 Bytes,一个HTTP的head都要几十Bytes;

5) 支持可靠传输,数据重传,块传输;

6) 支持IP多播, 可同时向多个设备发送请求,鸿蒙设备的发现功能就是用的这个特性;

7) 非长连接通信,适用于低功耗物联网场景;

8) 支持观察模式;

3.2 协议类型及结构

COAP协议有4种消息类型。

CON: 需要确认,如果CON请求被发送,那对方必须做出响应,确认收到消息,用以可靠消息传输;

NON: 不需要被确认的请求,如果NON请求被发送,那对方不必作出回应。适用于消息会重复频繁的发送,丢包不影响正常操作。和UDP很像,用于不可靠消息传输;

ACK: 应答消息,对应的是CON消息的应答;

RST: 复位消息,可靠传输时候接收的消息不认识或错误时,必须回RST消息;

协议结构定义

在源码discovery/coap/include/coap_def.h中对COAP协议的结构体进行了定义。

深度解读设备的“万能语言”HarmonyOS的分布式软总线能力

深度解读设备的“万能语言”HarmonyOS的分布式软总线能力

3.3 COAP包的传输

传输方式为客户端和服务器端模式,服务器端启动COAP包的监听服务。

源码discovery/coap/include/coap_socket.h中提供了COAP包的发送和接收函数定义。

深度解读设备的“万能语言”HarmonyOS的分布式软总线能力

深度解读设备的“万能语言”HarmonyOS的分布式软总线能力

3.4 COAP设备发现

源码discovery/coap/source/coap_discover.c实现了基于COAP的设备发现功能。

深度解读设备的“万能语言”HarmonyOS的分布式软总线能力


3.5 COAP的安全性

TLS不能用来保证UDP上传输的数据的安全,因此Datagram TLS试图在现存的TLS架构上提出扩展,使之支持UDP。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwxpg.html