如果無法對節點執行作業,節點的資料模型 (DM) 就沒有意義。互動模型 (IM) 定義節點與其他節點 DM 的 DM 關係,也就是 DM 之間的通用通訊語言。
節點會透過下列方式互動:
- 讀取及訂閱屬性和事件
- 寫入屬性
- 叫用指令
每當節點與另一個節點建立加密通訊序列時,就會構成「互動」關係。互動可能由一或多個交易組成,而交易則由一或多個動作組成,可視為節點間的 IM 層級訊息。

交易支援多種動作,例如從其他節點要求屬性或事件的讀取要求動作,或是其回應 (即報告資料動作),可將資訊從伺服器傳回用戶端。
啟動者和目標
發起交易的節點是「發起者」,回應的節點則是「目標」。通常「啟動器」是「用戶端叢集」,而「目標」是「伺服器叢集」。不過,這個模式也有例外狀況,例如本節稍後分析的訂閱互動。
群組
Matter 中的節點可能屬於群組。裝置群組是一種機制,可同時向同一動作中的多部裝置傳送訊息。群組中的所有節點共用相同的群組 ID,也就是 16 位元整數。
如要進行群組層級的通訊 (Groupcast), Matter 會使用 IPv6 Multicast 訊息,所有群組成員都會有相同的 Multicast 地址。
路徑
如要與屬性、事件或指令互動,我們必須指定互動的路徑:節點資料模型階層中屬性、事件或指令的位置。但請注意,路徑也可能使用「群組」或「萬用字元運算子」,同時處理多個節點或叢集,匯總這些互動,進而減少動作數量。
這項機制對於提升通訊的回應速度至關重要。舉例來說,使用者想關閉所有燈具時,語音助理可以與群組中的多個燈具建立單一互動,而不是一連串的個別互動。如果發起者與每盞燈建立個別互動,可能會在裝置回應速度方面產生人為可察覺的延遲。這項效果會導致多個裝置對指令做出反應時,彼此之間出現明顯延遲。這通常稱為「爆米花效應」。
您可以使用下列其中一個選項,在 Matter 中組裝路徑:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
在這些路徑建構區塊中,endpoint
和 cluster
也可能包含萬用字元運算子,用於選取多個節點執行個體。
計時和非計時
執行寫入或叫用交易的方法有兩種:計時和非計時。限時交易會為要傳送的寫入/叫用動作設定最長逾時時間。這項逾時設定的目的是防止交易遭到攔截攻擊。特別適用於可控管資產存取權的裝置,例如車庫門開啟器和門鎖。
如要瞭解限時交易,請先瞭解攔截攻擊的發生方式,以及限時交易的重要性。
攔截攻擊
攔截攻擊的模式如下:
- 小莉傳送初始訊息給志明,例如「撰寫要求動作」。
- 中間人 Eve 攔截郵件,並阻止 Bob 接收郵件,例如透過某種無線電干擾。
- 阿莉沒有收到志明回覆,因此傳送第二則訊息。
- Eve 再次攔截訊息,阻止 Bob 接收。
- Eve 會將攔截到的第一則訊息傳送給 Bob,並偽裝成 Alice 傳送。
- Bob 將回覆傳送給 Alice (和 Eve)。
- Eve 會保留第二則攔截到的訊息,以便稍後重播。由於志明從未收到小莉傳送的原始第二則攔截訊息,因此會接受該訊息。如果訊息編碼的指令是「開鎖」等,就表示發生安全漏洞。
為防範這類攻擊,Timed Actions 會在交易開始時設定交易逾時上限。即使 Eve 設法執行攻擊向量的前六個步驟,由於交易逾時,她也無法在步驟 7 重播訊息。
計時交易會增加動作的複雜度和數量。因此,不建議用於每筆交易,只適用於裝置上可控管實體或虛擬安全和隱私權資產的重要作業。
SDK 抽象化
「讀取交易」、「寫入交易」和「叫用交易」部分會提供 SDK 執行的互動模型動作概略總覽。
建立使用 Matter SDK 的產品時,開發人員通常不會直接呼叫來執行動作,而是透過 SDK 函式將動作抽象化,並封裝至互動中。不過,瞭解 IM 動作有助於工程師充分掌握 Matter 的功能,並精細控管 SDK 實作項目。