Модель данных (DM) узла не имеет значения, если мы не можем выполнять над ними операции. Модель взаимодействия ( IM ) определяет отношения DM узла с DM других узлов: общий язык для общения между DM.
Узлы взаимодействуют друг с другом посредством:
- Чтение и подписка на атрибуты и события
- Запись в атрибуты
- Вызов команд
Всякий раз, когда Узел устанавливает зашифрованную последовательность связи с другим Узлом, они образуют отношения Взаимодействия . Взаимодействия могут состоять из одной или нескольких транзакций , а транзакции состоят из одного или нескольких действий , которые можно понимать как сообщения уровня IM между узлами.
В транзакциях поддерживается несколько действий, таких как действие запроса чтения, которое запрашивает атрибут или событие от другого узла, или его ответ, действие данных отчета, которое переносит информацию обратно с сервера клиенту.
Инициаторы и цели
Узел, который инициирует транзакцию, является инициатором , а узел, который отвечает, является целью . Обычно инициатором является клиентский кластер, а целью — кластер серверов. Однако из этого шаблона есть исключения, например, во взаимодействиях с подпиской, которые анализируются ниже в этом разделе.
Группы
Узлы в Matter могут принадлежать к Группе . Группа Устройств — это механизм одновременной адресации и отправки сообщений нескольким Устройствам в рамках одного Действия. Все узлы в группе имеют один и тот же идентификатор группы — 16-битное целое число.
Для осуществления связи на уровне группы ( Groupcast ) Matter использует Multicast сообщения IPv6, и все члены группы имеют один и тот же адрес Multicast .
Пути
Всякий раз, когда мы хотим взаимодействовать с атрибутом, событием или командой, мы должны указать путь для этого взаимодействия: расположение атрибута, события или команды в иерархии модели данных узла. Предостережение заключается в том, что пути также могут использовать группы или подстановочные операторы для одновременного обращения к нескольким узлам или кластерам, объединяя эти взаимодействия и тем самым уменьшая количество действий.
Этот механизм важен для повышения оперативности коммуникаций. Например, когда пользователь хочет выключить все источники света, голосовой помощник может установить одно взаимодействие с несколькими источниками света в группе вместо последовательности отдельных взаимодействий. Если Инициатор создает отдельные Взаимодействия с каждым источником света, он может генерировать ощутимую для человека задержку реагирования Устройства. Этот эффект заставляет несколько Устройств реагировать на команду с видимыми задержками между ними. Это часто называют «эффектом попкорна».
Путь в Matter можно собрать, используя один из следующих вариантов:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
И в этих строительных блоках пути endpoint
и cluster
также могут включать операторы подстановочных знаков для выбора более одного экземпляра узла.
Временное и бессрочное
Существует два способа выполнения транзакции записи или вызова: по времени и без времени . Временные транзакции устанавливают максимальный тайм-аут для отправки действия записи/вызова. Целью этого тайм-аута является предотвращение атаки перехвата на транзакцию. Это особенно актуально для устройств, которые обеспечивают доступ к активам, таким как открыватели гаражей и замки.
Чтобы понять временные транзакции, полезно понять, как могут происходить атаки перехвата и почему временные транзакции важны.
Атака перехвата
Атака перехвата имеет следующую схему:
- Алиса отправляет Бобу начальное сообщение, например действие запроса на запись.
- Ева, посредник, перехватывает сообщение и не позволяет Бобу получить его, например, с помощью какого-либо радиоглушения.
- Алиса, не получив ответа от Боба, отправляет второе сообщение.
- Ева снова перехватывает и не дает Бобу получить его.
- Ева отправляет Бобу первое перехваченное сообщение, как если бы оно исходило от Алисы.
- Боб отправляет ответ Алисе (и Еве).
- Ева хранит второе перехваченное сообщение для последующего воспроизведения. Поскольку Боб никогда не получал исходное второе перехваченное сообщение от Алисы, он примет его. Это сообщение представляет собой нарушение безопасности, поскольку в сообщении закодирована такая команда, как «открыть замок».
Чтобы предотвратить атаки такого типа, Timed Actions устанавливает максимальный тайм-аут транзакции в начале транзакции. Даже если Еве удастся выполнить первые шесть шагов вектора атаки, она не сможет воспроизвести сообщение на шаге 7 из-за истекшего таймаута Транзакции.
Временные транзакции увеличивают сложность и количество действий. Таким образом, их рекомендуется использовать не для каждой транзакции, а только для критически важных операций на устройствах, которые контролируют физические или виртуальные активы безопасности и конфиденциальности.
Абстракции SDK
Разделы «Чтение транзакций» , «Запись транзакций» и «Вызов транзакций» предоставляют общий обзор действий модели взаимодействия, выполняемых SDK.
Разработчик, создающий продукт, использующий Matter SDK, обычно не выполняет вызовы для непосредственного выполнения действий; Действия абстрагируются функциями SDK, которые инкапсулируют их во взаимодействие. Однако понимание действий IM важно для того, чтобы дать инженеру хорошее знание возможностей Matter , а также точный контроль над реализацией SDK.