硬件环境

主控测:RK3568
被控测 :HI3863
coap报文见附件。

一、交互总览

从 Wireshark 抓包可见,192.168.43.3(客户端)192.168.43.1(服务端) 之间存在三类核心交互:

  • SPEKE 密钥协商流程:基于 CoAP 协议完成身份认证与密钥交换
  • e2eCtrl 端到端控制流程:协商完成后执行设备控制指令
  • e2eDataChange 数据变更通知流程:服务端向客户端推送状态变更

二、SPEKE 密钥协商流程

1. 协商时序表

包序号时间戳源 IP目标 IP协议报文类型关键信息
270.703054192.168.43.3192.168.43.1CoAPCON (Confirmable)POST /SPEKE,JSON,TKN: b2 82 17 73 7b ca 68 56
351.419753192.168.43.1192.168.43.3CoAPACK2.05 Content,MID:12911,同 Token
401.882282192.168.43.3192.168.43.1CoAPCONPOST /SPEKE,JSON,TKN: 9e 19 33 6a e1 51 72 c9
452.473499192.168.43.1192.168.43.3CoAPACK2.05 Content,MID:9234,同 Token

2. 流程说明

  1. 第一轮协商(CON → ACK)
    • 客户端向服务端发送 Confirmable (CON) 类型 POST 请求,路径 /SPEKE,携带 SPEKE 协议第一步协商参数(Token 用于标识会话)。
    • 服务端回复 ACK 2.05 Content,确认收到并返回协商响应数据,完成第一轮密钥交换。
  2. 第二轮协商(CON → ACK)
    • 客户端发送第二轮 CON POST 请求,使用新 Token,完成 SPEKE 后续协商步骤。
    • 服务端再次回复 ACK 2.05 Content,确认协商完成。
  3. 协议特性
    • 使用 CON 报文 保证可靠性,必须等待对端 ACK 确认。
    • 响应码 2.05 Content 表示请求成功处理并返回数据。
    • Token(8字节) 用于匹配请求与响应,确保会话唯一性与隔离性。

三、e2eCtrl 端到端控制流程

1. 控制时序表

包序号时间戳源 IP目标 IP协议报文类型关键信息
855.410056192.168.43.3192.168.43.1CoAPCONPOST /e2eCtrl,JSON,TKN: 74 3e 59 95 d5 be 27 69
865.415060192.168.43.3192.168.43.1CoAPCONPOST /e2eCtrl,JSON,TKN: 1c 62 ab b1 0b de d8 af
965.823732192.168.43.1192.168.43.3CoAPACK2.05 Content,MID:31527,同 Token
976.232154192.168.43.1192.168.43.3CoAPACK2.05 Content,MID:3923,同 Token
1026.951051192.168.43.3192.168.43.1CoAPCONPOST /e2eCtrl,JSON,TKN: 86 e9 31 63 8b 15 2d 76

2. 流程说明

  1. 控制请求发送
    • 客户端向服务端发送 CON POST 请求,路径 /e2eCtrl,携带 JSON 格式的端到端控制指令。
    • 可同时发送多个控制请求,通过不同 Token 区分不同控制会话。
  2. 服务端确认响应
    • 服务端返回 ACK 2.05 Content,确认控制指令已接收并处理。
    • 响应 MID 与请求 MID 严格匹配,Token 保持一致,保证请求-响应一一对应。
  3. 持续控制
    • 客户端可继续发送新的 CON 请求,执行持续设备控制操作。

四、e2eDataChange 数据变更通知流程

1. 数据变更时序表

包序号时间戳源 IP目标 IP协议报文类型关键信息
986.271830192.168.43.1192.168.43.3CoAPNON (Non-Confirmable)POST /e2eDataChange,text/plain,TKN: cc ca 01 10 01 16 a0 ba
996.276106192.168.43.1192.168.43.3CoAPNONPOST /e2eDataChange,text/plain,同 Token
1006.640454192.168.43.1192.168.43.3CoAPNONPOST /e2eDataChange,text/plain,TKN: a6 7e e0 22 6d 2b a6 46
1016.645024192.168.43.1192.168.43.3CoAPNONPOST /e2eDataChange,text/plain,同 Token

2. 流程说明

  1. 数据变更推送
    • 服务端向客户端发送 Non-Confirmable (NON) 类型 POST 请求,路径 /e2eDataChange
    • 报文格式为 text/plain,携带设备状态变更或数据更新内容。
    • 使用 NON 类型,无需客户端 ACK 确认,适合轻量、高频的状态通知场景。
  2. 可靠性增强
    • 同一 Token 重复发送,用于弥补 NON 报文无确认机制的可靠性缺陷,提升通知到达率。
    • 不同 Token 对应不同数据变更事件,实现多事件并行通知。

五、协议与技术总结

1. 核心协议栈

层级协议说明
传输层UDPCoAP 基于 UDP 实现,轻量化、低开销
应用层CoAP约束应用协议,适配 IoT 设备
业务层SPEKE安全密码认证密钥交换协议
业务层e2eCtrl/e2eDataChange端到端控制与数据通知接口

2. CoAP 报文类型选型

业务场景报文类型选型原因
SPEKE 协商CON + ACK密钥协商需高可靠性,必须确认
e2eCtrl 控制CON + ACK控制指令不可丢失,需可靠传输
e2eDataChange 通知NON轻量通知,允许少量丢失,降低开销

3. 接口与会话设计

  • 资源路径
    • /SPEKE:密钥协商接口
    • /e2eCtrl:端到端控制接口
    • /e2eDataChange:数据变更通知接口
  • 会话标识:8字节 Token,用于唯一标识请求-响应对,实现多会话并行与隔离。

六、Wireshark 过滤规则

1. 全业务过滤

ip.addr == 192.168.43.1 and ip.addr == 192.168.43.3 and coap

2.仅 SPEKE 协商:

ip.addr == 192.168.43.1 and ip.addr == 192.168.43.3 and coap and (coap.uri.path == "SPEKE")

3.仅 e2eCtrl 控制:

ip.addr == 192.168.43.1 and ip.addr == 192.168.43.3 and coap and (coap.uri.path == "e2eCtrl")

4.仅 e2eDataChange 通知:

ip.addr == 192.168.43.1 and ip.addr == 192.168.43.3 and coap and (coap.uri.path == "e2eDataChange")

七、业务流程总结

  1. 密钥协商阶段:客户端与服务端通过两轮 CON-ACK 完成 SPEKE 身份认证与密钥交换,建立安全通信通道。
  2. 设备控制阶段:协商完成后,客户端通过 CON 报文向服务端发送控制指令,服务端 ACK 确认执行。
  3. 状态同步阶段:服务端通过 NON 报文向客户端推送设备状态变更,实现端到端状态同步。
相关文件下载
test_okk.rar
5.23 KB
下载
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐