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 nút đó. 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ý thuộc tính và sự kiện
- Ghi vào 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. 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 có thể được hiểu là tin nhắn cấp IM giữa các Nút.
Một số Thao tác được hỗ trợ trên Giao dịch, chẳng hạn như Thao tác 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 Thuộc tính hoặc Sự kiện đó, Thao tác Dữ liệu báo cáo, mang thông tin từ máy chủ trở lại máy khách.
Người khởi xướng và mục tiêu
Nút bắt đầu một Giao dịch là Bên 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 ứng dụng và Mục tiêu là Cụm máy chủ. Tuy nhiên, vẫn có những trường hợp ngoại lệ đối với mẫu hình này, chẳng hạn như trong phần Tương tác với hoạt động đăng ký được phân tích sâu hơn ở phần dưới của 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 nhiều Thiết bị trong cùng một Thao tác cùng một lúc. Tất cả các Nút trong một Nhóm đều có cùng Mã nhóm, một số nguyên 16 bit.
Để thực hiện giao tiếp ở cấp nhóm (Groupcast), Matter tận dụng các thông báo Multicast IPv6 và tất cả thành viên trong nhóm đều có cùng đị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 hoạt động 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. Tuy nhiên, đườ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 đó làm giảm số lượng hành động.
Cơ chế này đóng vai trò quan trọng trong việc nâng cao khả năng phản hồi của các thông tin liên lạc. 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 nhiều đèn trong một Nhóm thay vì một chuỗi các Lượt tương tác riêng lẻ. Nếu Trình khởi tạo tạo các Tương tác riêng lẻ với từng đèn, thì điều này 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, nhưng có độ trễ rõ ràng giữa các thiết bị. Hiện tượng này thường được gọi là "hiệu ứng bỏng ngô".
Bạn có thể tạo một Đường dẫn trong Matter bằng một trong các lựa chọn dưới đây:
<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.
Có giới hạn thời gian và Không giới hạn thời gian
Có hai cách để thực hiện một Giao dịch ghi hoặc gọi: Định thời gian và Không định thời gian. Giao dịch có thời gian 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 đối với Giao dịch. Điều này đặc biệt có giá trị đối với những 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 nhà để xe và khoá.
Để hiểu về Giao dịch có thời gian, bạn nên tìm hiểu cách các cuộc tấn công chặn có thể xảy ra và lý do Giao dịch có thời gian 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ư Thao tác yêu cầu viết.
- Eve, một người trung gian, chặn tin nhắn và ngăn không cho Bob nhận được nó, ví dụ như 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 tin nhắn thứ hai.
- Eve lại chặn và ngăn Bob nhận được thông báo.
- Eve gửi tin nhắn bị chặn đầu tiên cho Bob, như thể tin nhắn đó đến từ Alice.
- Bob gửi phản hồi cho Alice (và Eve).
- Eve giữ lại 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 thứ hai ban đầu bị chặn 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 xâm nhập 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, Thao tác có thời gian sẽ đặt Thời gian chờ tối đa của giao dịch khi bắt đầu Giao dịch. Ngay cả khi Eve quản lý để thực hiện 6 bước đầu tiên của vectơ tấn công, thì cô ấy cũng sẽ không thể phát lại thông báo ở bước 7 do hết thời gian chờ của Giao dịch.
Giao dịch có thời gian sẽ làm tăng độ phức tạp và số lượng Hành động. Do đó, bạn không nên dùng chúng cho mọi Giao dịch, mà chỉ dùng cho các hoạt động quan trọng trên Thiết bị có quyền kiểm soát các tài sản bảo mật và quyền riêng tư thực hoặc ảo.
Trừu tượng hoá SDK
Các phần Đọc giao dịch, Ghi giao dịch và Gọi giao dịch cung cấp tổng quan cấp cao về các Hành động mô hình tương tác do SDK thực hiện.
Nhà phát triển tạo sản phẩm sử dụng SDK Matter thường không thực hiện lệnh gọi để thực thi Hành động trực tiếp; các Hành động được trừu tượng hóa bằng các hàm SDK sẽ đóng gói chúng thành một Tương tác. Tuy nhiên, việc hiểu rõ về IM Actions rất quan trọng để giúp kỹ sư thành thạo về khả năng của Matter, cũng như kiểm soát tốt việc triển khai SDK.