| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> OpenHarmony源码评注|Coap协议的定义 -> 正文阅读 |
|
[网络协议]OpenHarmony源码评注|Coap协议的定义 |
总述中提到,discovery模块负责实现设备发现的机制,其核心在于以coap作为协议进行物联网通信。本篇我们主要介绍并分析coap协议。 背景知识 Coap(Constrained Application Protocol)是作用在物联网应用层的协议,是IETF组织发布的互联网系列标准之一(具体参照RFC7252)。其具有允许IP多播、协议小巧、资源消耗低等特点。 其中,支持IP多播的特性能够让设备在同一局域网下向其他设备进行广播,实现主动发现设备。 源码分析 Coap的定义 在communication_softbus_lite-master\discovery\coap\include中的coap_def.h头文件对Coap协议进行了定义。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? COAP_Packet定义了整个数据包,包括下层协议类型、信息头、标识符、报文选项,以及负载内容。下面我们一一进行解读。 一、协议类型 枚举COAP_ProtocolTypeEnum中展示了Coap所支持的传输层协议,UDP和TCP均支持。
二、信息头 和其他协议一样,CoAP协议带有信息头。 以下是信息头COAP_Header的定义
[ver] 版本编号,指coap协议的版本号 [type] 报文类型,包括CON, NONCON, ACK, RESET 4种
CON 需要被确认的请求,如果CON请求被发送,那么对方必须做出响应。 NONCON 不需要被确认的请求,如果NON请求被发送,那么对方不必做出回应。这适用于消息会重复频繁的发送,丢包不影响正常操作。 ACK 应答消息对应的是CON消息的应答。 RESET 复位消息,可靠传输时候接收的消息不认识或错误时,不能回ACK消息,必须回RST消息。 [tokenlen] Coap标识符长度 [code] 响应码或请求码 共8bit,分成前3bit(0~7)和后5bit(0~31),前3bit代表类型。0代表空消息。
Coap的请求码包括4种,很好理解。 响应码有很多,在此不多赘述。 三、数据缓冲区 标识符内容和负载都是通过结构体COAP_Buffer进行定义,其定义如下
这个结构体很简单,就是有一个指针指向具体信息,然后记录其长度。其中,标识符长度在COAP_Header的tokenlen已经定义好。 负载的长度就根据实际情况而定了。由于payload表示实际负载,若有,则前面加payload标识符“0xFF”;如果没有payload标识符,那么就代表这是一个0长度的payload。如果存在payload标识符但其后跟随的是0长度的payload,那么必须当作消息格式错误处理。 四、选项 选项部分由COAP_Option进行定义,包括选项选项数和内容指针
文件中定义了选项数量上限 #define COAP_MAX_OPTION 16 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:36:46- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |