如果我们无法执行操作,节点的数据模型 (DM) 与无关 。交互模型 (IM) 定义了节点的 DM 关系 与其他节点的 DM 共享:DM 之间通信的通用语言。
节点通过以下方式相互交互:
- 读取和订阅属性和事件
- 写入属性
- 调用命令
每当节点与另一个节点建立加密通信序列时 它们构成了 Interaction 关系。互动可能是 由一笔或多笔交易构成,而“交易”由以下部分构成: 一项或多项操作(可理解为 IM 级消息) 节点。
<ph type="x-smartling-placeholder">事务支持多种操作,例如读取请求操作 从其他节点请求某个属性或事件 报告数据操作,该操作将信息从服务器传回 客户端。
发起者和目标
发起事务的节点是发起者,而发起事务的节点则是发起事务的节点。 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>
在这些路径构建块中,endpoint
和 cluster
还可能包含
用于选择多个节点实例的通配符。
定时和非定时
执行写入或调用事务的方法有两种:定时和 不计时。定时事务为 要发送的写入/调用操作。超时的目的是防止 针对交易的拦截攻击。该功能尤其适用于 资产(例如车库开启器和锁)的门禁。
为了理解定时事务,理解拦截攻击的方式会很有帮助。 以及定时事务的重要性
拦截攻击
拦截攻击具有以下模式:
- Alice 向 Bob 发送一条初始消息,例如写入请求操作。
- 中间人夏娃拦截了邮件并阻止小鲍 接收信号,例如通过某种类型的无线电干扰。
- Alice 没有收到 Bob 的回复,因此发送了第二条消息。
- Eve 再次拦截,阻止了 Bob 收到。
- Eve 将第一条消息发送给 Bob,就像是来自 爱丽。
- Bob 将回复发送给 Alice(和 Eve)。
- Eve 持有第二条拦截消息以供稍后重放。由于小鲍从未 收到来自 Alice 的原始第二条拦截消息,它会接受 。如果消息对 例如“打开锁”
为防止此类攻击,计时操作设置了最大交易量 在事务开始时超时。即使夏娃成功地执行了 攻击途径的前六步,就无法重放消息 因为 Transaction 的超时超时。
定时事务增加了操作的复杂性和数量。因此, 不建议用于每个事务, 可控制实体或虚拟安全和隐私资产的设备。
SDK 抽象
读取事务部分、 写入事务和 调用事务 简要概述了由 SDK。
开发者正在创建使用 Matter SDK 的产品 通常不会执行调用来直接执行操作;这些操作是 由 SDK 函数提取,这些函数会将它们封装成 Interaction。 但是,了解 IM 操作对于为工程师提供良好的 精通Matter的功能, 对 SDK 实现的控制。