Mô hình dữ liệu (DM) của một Nút không liên quan nếu chúng ta không thể thực hiện các thao tác trên chúng. Mô hình tương tác (IM) xác định mối quan hệ DM của một Nút với DM của các Nút khác: một ngôn ngữ chung để giao tiếp giữa các DM.
Các Nút tương tác với nhau bằng cách:
- Đọc và đăng ký các thuộc tính và sự kiện
- Ghi vào các thuộc tính
- Gọi lệnh
Bất cứ khi nào một Nút thiết lập một chuỗi giao tiếp được mã hoá với một Nút khác, chúng sẽ tạo thành mối quan hệ Tương tác. Các lượt tương tác có thể bao gồm một hoặc nhiều Giao dịch và Giao dịch bao gồm một hoặc nhiều Hành động mà bạn có thể hiểu là các thông báo ở cấp IM giữa các Nút.
Một số Hành động được hỗ trợ trên Giao dịch, chẳng hạn như Hành động yêu cầu đọc yêu cầu một Thuộc tính hoặc Sự kiện từ một Nút khác hoặc phản hồi của nó, Hành động báo cáo dữ liệu, mang thông tin trở lại từ máy chủ đến ứng dụng.
Trình khởi tạo và mục tiêu
Nút khởi tạo Giao dịch là Trình khởi tạo, trong khi Nút phản hồi là Mục tiêu. Thông thường, Trình khởi tạo là Cụm máy khách và Mục tiêu là Cụm máy chủ. Tuy nhiên, có một số trường hợp ngoại lệ đối với mẫu này, chẳng hạn như trong Tương tác đăng ký được phân tích thêm ở phần sau trong phần này.
Nhóm
Các Nút trong Matter có thể thuộc về một Nhóm. Nhóm thiết bị là một cơ chế để giải quyết và gửi thông báo đến một số Thiết bị trong cùng một Hành động cùng một lúc. Tất cả các Nút trong một Nhóm đều dùng chung Mã nhóm, một số nguyên 16 bit.
Để hoàn thành giao tiếp ở cấp nhóm (Groupcast), Matter tận dụng thông báo IPv6 Multicast và tất cả thành viên Nhóm đều có cùng một địa chỉ Multicast.
Đường dẫn
Bất cứ khi nào muốn tương tác với một Thuộc tính, Sự kiện hoặc Lệnh, chúng ta phải chỉ định Đường dẫn cho lượt tương tác này: vị trí của một Thuộc tính, Sự kiện hoặc Lệnh trong hệ thống phân cấp Mô hình dữ liệu của một Nút. Lưu ý là đường dẫn cũng có thể sử dụng Nhóm hoặc Toán tử ký tự đại diện để giải quyết đồng thời một số Nút hoặc Cụm, tổng hợp các Tương tác này và do đó giảm số lượng hành động.
Cơ chế này rất quan trọng để tăng cường khả năng phản hồi của giao tiếp. Ví dụ: khi người dùng muốn tắt tất cả đèn, trợ lý giọng nói có thể thiết lập một lượt tương tác duy nhất với một số đèn trong một Nhóm thay vì một chuỗi Tương tác riêng lẻ. Nếu Trình khởi tạo tạo Tương tác riêng lẻ với từng đèn, thì có thể tạo ra độ trễ mà con người có thể nhận thấy trong khả năng phản hồi của Thiết bị. Hiệu ứng này khiến nhiều Thiết bị phản ứng với một lệnh có độ trễ rõ ràng giữa chúng. Điều này thường được gọi là "hiệu ứng bỏng ngô".
Bạn có thể tập hợp một Đường dẫn trong Matter bằng một trong các tuỳ chọn bên dưới:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
Và trong các khối xây dựng Đường dẫn này, endpoint và cluster cũng có thể bao gồm Toán tử ký tự đại diện để chọn nhiều thực thể Nút.
Đã hẹn giờ và chưa hẹn giờ
Có hai cách để thực hiện Giao dịch ghi hoặc gọi: Đã hẹn giờ và Chưa hẹn giờ. Giao dịch đã hẹn giờ thiết lập thời gian chờ tối đa để gửi Hành động ghi/gọi. Mục đích của thời gian chờ này là để ngăn chặn Tấn công chặn trên Giao dịch. Điều này đặc biệt có giá trị đối với các Thiết bị kiểm soát quyền truy cập vào tài sản, chẳng hạn như thiết bị mở cửa gara và khoá.
Để hiểu Giao dịch đã hẹn giờ, bạn nên hiểu cách Tấn công chặn có thể xảy ra và lý do tại sao Giao dịch đã hẹn giờ lại quan trọng.
Tấn công chặn
Tấn công chặn có mẫu sau:
- Alice gửi cho Bob một thông báo ban đầu, chẳng hạn như Hành động yêu cầu ghi.
- Eve, một người trung gian, chặn thông báo và ngăn Bob nhận được thông báo đó, ví dụ: thông qua một số loại gây nhiễu sóng vô tuyến.
- Alice không nhận được phản hồi từ Bob nên đã gửi một thông báo thứ hai.
- Eve chặn lại và ngăn Bob nhận được thông báo đó.
- Eve gửi thông báo bị chặn đầu tiên cho Bob, như thể thông báo đó đến từ Alice.
- Bob gửi phản hồi cho Alice (và Eve).
- Eve giữ thông báo bị chặn thứ hai để phát lại sau. Vì Bob chưa bao giờ nhận được thông báo bị chặn thứ hai ban đầu từ Alice, nên Bob sẽ chấp nhận thông báo đó. Thông báo này thể hiện một hành vi vi phạm bảo mật khi thông báo mã hoá một lệnh như "mở khoá".
Để ngăn chặn các loại tấn công này, Hành động đã hẹn giờ sẽ đặt thời gian chờ tối đa cho Giao dịch khi bắt đầu Giao dịch. Ngay cả khi Eve quản lý để thực hiện sáu bước đầu tiên của vectơ tấn công, thì Eve cũng sẽ không thể phát lại thông báo ở bước 7 do thời gian chờ đã hết trên Giao dịch.
Giao dịch đã hẹn giờ làm tăng độ phức tạp và số lượng Hành động. Do đó, bạn không nên sử dụng các giao dịch này cho mọi Giao dịch mà chỉ nên sử dụng cho các thao tác quan trọng trên Thiết bị có quyền kiểm soát tài sản bảo mật và quyền riêng tư vật lý hoặc ảo.
Trừu tượng SDK
Các phần Giao dịch đọc, Giao dịch ghi, và Giao dịch gọi cung cấp thông tin tổng quan cấp cao về các Hành động của Mô hình tương tác do SDK thực hiện.
Nhà phát triển tạo một sản phẩm sử dụng SDK Matter thường không thực hiện các lệnh gọi để trực tiếp thực thi Hành động; các Hành động được các hàm SDK trừu tượng hoá để đóng gói chúng vào một Tương tác. Tuy nhiên, việc hiểu các Hành động IM là rất quan trọng để giúp kỹ sư có được khả năng thành thạo về các chức năng của Matter, cũng như kiểm soát tốt việc triển khai SDK.