Khái niệm mô hình tương tác

Mô hình dữ liệu (DM) của một Nút sẽ không phù hợp nếu chúng tôi không thể thực hiện thao tác đối với 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ý 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 trình tự liên lạc đã mã hoá với một Nút khác Nút, chúng tạo thành mối quan hệ Tương tác. Các lượt tương tác có thể là 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 Nút.

Hệ phân cấp của Mô hình tương tác
Hình 1: Hệ phân cấp của Mô hình tương tác

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út đó, thì Báo cáo Hành động dữ liệu, mang thông tin trở lại từ máy chủ đến khách hàng.

Trình khởi tạo và mục tiêu

Nút bắt đầu một Giao dịch là Đầu mối khởi tạo, còn Nút phản hồi là Mục tiêu. Thông thường, thực thể khởi tạo là một cụm ứng dụng khách và mục tiêu là một cụm máy chủ. Tuy nhiên, vẫn có những ngoại lệ đối với mẫu này, chẳng hạn như như trong phần Tương tác với gói thuê bao được phân tích kỹ hơn trong phần này.

Nhóm

Các nút trong Matter có thể thuộc về một Nhóm. Một nhóm Thiết bị là cơ chế gửi và gửi thông báo đến nhiều Thiết bị trong cùng một Hành động đồng thời. Tất cả các Nút trong một Nhóm đều có cùng một 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 IPv6 Multicast các tin nhắn và tất cả các thành viên trong Nhóm đều có cùng Multicast của bạn.

Đườ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 Thuộc tính, Sự kiện hoặc Lệnh trong hệ phân cấp Mô hình dữ liệu của Nút. Lưu ý rằng đường dẫn có thể cũng sử dụng Nhóm hoặc Toán tử ký tự đại diện để xử lý một số Nút hoặc Tạo nhóm đồng thời, tổng hợp các Tương tác này và do đó làm giảm số lượng thao tác.

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 thông tin giao tiếp. Để ví dụ: khi người dùng muốn tắt tất cả các đèn, trợ lý thoại có thể thiết lập một tương tác duy nhất với nhiều đèn trong một Nhóm thay vì chuỗi tương tác riêng lẻ. Nếu Trình khởi tạo tạo Khi tương tác với mỗi ánh sáng, đèn có thể tạo ra độ trễ mà con người có thể nhận biết được 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 với độ 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 lựa chọn bên dưới:

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

Ngoài ra, trong các thành phần Đường dẫn này, endpointcluster cũng có thể bao gồm Toán tử ký tự đại diện để chọn nhiều phiên bản Nút.

Có tính giờ và không tính giờ

Có hai cách để thực hiện Giao dịch ghi hoặc Gọi: Được tính giờKhông được tính giờ. Giao dịch có tính thời gian thiết lập thời gian chờ tối đa cho Viết/Gọi hành động cần gửi. Mục đích của thời gian chờ này là để ngăn chặn Tấn công can thiệp vào Giao dịch. Điều này đặc biệt hợp lệ cho các Thiết bị quyền truy cập vào các tài sản, chẳng hạn như dụng cụ mở cổng và khoá nhà xe.

Để hiểu về Giao dịch theo thời gian, bạn nên nắm được cách thức Tấn công bị chặn có thể xảy ra và lý do tại sao Giao dịch theo thời gian lại quan trọng.

The Intercept Attack (Tấn công chặn)

Cuộc tấn công chặn có mẫu sau:

  1. Alice gửi cho Bob một tin nhắn ban đầu, chẳng hạn như Hành động yêu cầu ghi.
  2. Eve, một người trung gian, chặn tin nhắn và không cho Bob nhận tín hiệu này, chẳng hạn như qua một hình thức gây nhiễu đài phát thanh nào đó.
  3. Không nhận được phản hồi từ Bob, Alice gửi tin nhắn thứ hai.
  4. Eve lại chặn và ngăn Bob nhận được tin nhắn đó.
  5. Eve gửi tin nhắn bị chặn đầu tiên đến Bob, như thể tin nhắn đó đến từ Alice.
  6. Bob gửi phản hồi cho Alice (và Eve).
  7. Eve giữ tin nhắn bị chặn thứ hai để phát lại sau. Vì Bob chưa bao giờ nhận được tin nhắn gốc thứ hai bị chặn từ Alice, nên Bob sẽ chấp nhận tin nhắn đó. Thông báo này thể hiện hành vi vi phạm bảo mật khi thông báo mã hoá chẳng hạn như "mở khoá".

Để ngăn chặn các loại tấn công này, tính năng Hành động có tính thời gian sẽ đặt một Giao dịch tối đa hết thời gian chờ khi bắt đầu Giao dịch. Ngay cả khi Eve có thể thực thi sáu bước đầu tiên của vectơ tấn công, nó sẽ không thể phát lại thông báo ở bước 7 do hết thời gian chờ trên Giao dịch.

Giao dịch theo thời gian 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 quyền 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 những Thiết bị có quyền kiểm soát đối với 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 SDK

Các phần Đọc giao dịch, Ghi giao dịchGọi giao dịch cung cấp thông tin tổng quan ở cấp cao về các Hành động mô hình tương tác được thực hiện bởi SDK.

Nhà phát triển tạo ra một sản phẩm sử dụng SDK Matter thường không thực hiện lệnh gọi để thực thi Actions trực tiếp; Hành động là được tóm tắt bằng các hàm SDK sẽ đóng gói chúng vào một Tương tác. Tuy nhiên, việc hiểu rõ Hành động nhanh là rất quan trọng để cung cấp cho kỹ sư thành thạo về các khả năng của Matter, cũng như tốt quyền kiểm soát việc triển khai SDK.