互动模式概念

如果我们无法执行操作,节点的数据模型 (DM) 与无关 。交互模型 (IM) 定义了节点的 DM 关系 与其他节点的 DM 共享:DM 之间通信的通用语言。

节点通过以下方式相互交互:

  • 读取和订阅属性和事件
  • 写入属性
  • 调用命令

每当节点与另一个节点建立加密通信序列时 它们构成了 Interaction 关系。互动可能是 由一笔或多笔交易构成,而“交易”由以下部分构成: 一项或多项操作(可理解为 IM 级消息) 节点。

<ph type="x-smartling-placeholder">
</ph> 互动模型的层次结构 <ph type="x-smartling-placeholder">
</ph> 图 1:互动模型的层次结构

事务支持多种操作,例如读取请求操作 从其他节点请求某个属性或事件 报告数据操作,该操作将信息从服务器传回 客户端。

发起者和目标

发起事务的节点是发起者,而发起事务的节点则是发起事务的节点。 Target 即可。通常,发起者是一个客户端集群, 目标是服务器集群。不过,这种模式也有一些例外情况,例如 如本部分中进一步分析的订阅互动部分所示。

社区

Matter 中的节点可能属于一个群组。一组 设备是一种寻址和向多台设备发送消息的机制, 同一 Action。组中的所有节点共享同一个组 ID,这是一个 16 位的整数。

如需实现群组级通信(Groupcast),请执行以下操作: Matter 使用 IPv6 Multicast 消息,并且所有群组成员都有相同的Multicast 地址。

路径

每当我们想要与某个属性、事件或命令互动时 指定此互动的路径:属性、事件的位置 节点的数据模型层次结构中的命令或命令。需要注意的是,路径 也可以使用群组通配符运算符来处理多个节点或 同时聚合这些交互,从而减少 操作次数。

此机制对于提高通信的响应能力非常重要。对于 例如,当用户想关掉所有灯时,语音助理可以 在一个群组内与多个灯具建立单一互动,而不是 各个互动的序列。如果发起者创建了 在与每个光源的交互时,它会在环境下产生人类可感知的延迟 设备响应速度。此效果会导致多个设备对 命令,两者之间会有明显的延迟。这通常称为 “爆米花效应”。

Matter 中的路径可以使用以下某个选项组建: 如下:

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

在这些路径构建块中,endpointcluster 还可能包含 用于选择多个节点实例的通配符。

定时和非定时

执行写入或调用事务的方法有两种:定时不计时。定时事务为 要发送的写入/调用操作。超时的目的是防止 针对交易的拦截攻击。该功能尤其适用于 资产(例如车库开启器和锁)的门禁。

为了理解定时事务,理解拦截攻击的方式会很有帮助。 以及定时事务的重要性

拦截攻击

拦截攻击具有以下模式:

  1. Alice 向 Bob 发送一条初始消息,例如写入请求操作。
  2. 中间人夏娃拦截了邮件并阻止小鲍 接收信号,例如通过某种类型的无线电干扰。
  3. Alice 没有收到 Bob 的回复,因此发送了第二条消息。
  4. Eve 再次拦截,阻止了 Bob 收到。
  5. Eve 将第一条消息发送给 Bob,就像是来自 爱丽。
  6. Bob 将回复发送给 Alice(和 Eve)。
  7. Eve 持有第二条拦截消息以供稍后重放。由于小鲍从未 收到来自 Alice 的原始第二条拦截消息,它会接受 。如果消息对 例如“打开锁”

为防止此类攻击,计时操作设置了最大交易量 在事务开始时超时。即使夏娃成功地执行了 攻击途径的前六步,就无法重放消息 因为 Transaction 的超时超时。

定时事务增加了操作的复杂性和数量。因此, 不建议用于每个事务, 可控制实体或虚拟安全和隐私资产的设备。

SDK 抽象

读取事务部分、 写入事务调用事务 简要概述了由 SDK。

开发者正在创建使用 Matter SDK 的产品 通常不会执行调用来直接执行操作;这些操作是 由 SDK 函数提取,这些函数会将它们封装成 Interaction。 但是,了解 IM 操作对于为工程师提供良好的 精通Matter的功能, 对 SDK 实现的控制。