اگر نتوانیم عملیاتی روی «مدل داده» (DM) «گره» انجام دهیم، این مدل مرتبط نیست. مدل تعامل (IM)، رابطه DM یک «گره» را با DM سایر «گرهها» تعریف میکند: زبانی مشترک برای ارتباط بین DMها.
گرهها ازطریق موارد زیر با یکدیگر تعامل میکنند:
- خواندن و مشترک شدن در «ویژگیها» و «رویدادها»
- نوشتن در «مشخصهها»
- فراخوانی فرمانها
هرگاه یک «گره» با «گره» دیگری توالی ارتباط رمزگذاریشده برقرار کند، رابطه تعامل را تشکیل میدهند. تعاملها ممکن است از یک یا چند تراکنش تشکیل شده باشند و تراکنشها از یک یا چند کنش تشکیل شده باشند که میتوانند بهعنوان پیامهای سطح IM بین «گرهها» درک شوند.
چندین «کنش» در «تراکنشها» پشتیبانی میشود، مثل «کنش درخواست خواندن» که «مشخصه» یا «رویدادی» را از «گره» دیگری درخواست میکند، یا پاسخ آن، «کنش دادههای گزارش»، که اطلاعات را از سرور به مشتری برمیگرداند.
سازندگان و هدفها
«گرهای» که «تراکنش» را آغاز میکند آغازگر است، درحالیکه «گرهای» که پاسخ میدهد هدف است. معمولاً «آغازگر» یک «خوشه کارخواه» و «هدف» یک «خوشه سرور» است. بااینحال، استثنائاتی برای این الگو وجود دارد، مانند تعاملات اشتراک که در ادامه این بخش بیشتر تجزیهوتحلیل شده است.
گروهها
گرههای موجود در Matter ممکن است متعلق به گروه باشند. «گروه دستگاهها» سازوکاری برای خطاب کردن و ارسال پیام به چندین «دستگاه» در یک «کنش» بهطور همزمان است. همه «گرهها» در یک «گروه» از شناسه گروه یکسانی استفاده میکنند، یک عدد صحیح ۱۶ بیتی.
برای انجام ارتباطات سطح گروه (پخش گروهی)، Matter از پیامهای IPv6 Multicast استفاده میکند و همه اعضای «گروه» نشانی Multicast یکسان دارند.
مسیرها
هرگاه بخواهیم با «مشخصه»، «رویداد»، یا «فرمانی» تعامل داشته باشیم، باید مسیر این تعامل را مشخص کنیم: مکان «مشخصه»، «رویداد»، یا «فرمان» در سلسلهمراتب «مدل داده» «گره». نکته مهم این است که مسیرها ممکن است همزمان از گروهها یا عملگرهای کارت عام برای خطاب کردن چندین «گره» یا «خوشه» استفاده کنند و این «تعاملها» را تجمیع کنند و درنتیجه تعداد کنشها را کاهش دهند.
این سازوکار برای بهبود پاسخدهی ارتباطات مهم است. برای مثال، وقتی کاربری میخواهد همه چراغها را خاموش کند، دستیار صوتی میتواند بهجای مجموعهای از «تعاملهای» جداگانه، یک تعامل واحد با چندین چراغ در «گروه» برقرار کند. اگر «آغازگر» برای هر چراغ «تعاملهای» جداگانه ایجاد کند، ممکن است در پاسخدهی «دستگاه» تأخیر قابلتشخیص برای انسان ایجاد شود. این جلوه باعث میشود «دستگاههای» متعدد با تأخیرهای قابلمشاهده بین آنها به فرمان واکنش نشان دهند. این اغلب بهعنوان «اثر پاپکورنی» شناخته میشود.
«مسیر» در Matter را میتوان بااستفاده از یکی از گزینههای زیر مونتاژ کرد:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
و در این واحدهای سازنده «مسیر»، endpoint و cluster ممکن است شامل «عملگرهای نویسه عام» برای انتخاب بیشاز یک نمونه «گره» نیز باشند.
زماندار و بدون زمان
دو روش برای انجام «نوشتن» یا «فراخوانی تراکنش» وجود دارد: زماندار و بدون زمان. «تراکنشهای زماندار» حداکثر زمان انتظار برای ارسال «نوشتن/فراخوانی کنش» را تعیین میکنند. هدف از این مهلت زمانی جلوگیری از حمله میانهای به «تراکنش» است. این امر بهویژه برای «دستگاههایی» که دسترسی به داراییها را کنترل میکنند، مثل بازکنهای در گاراژ و قفلها، معتبر است.
برای درک «تراکنشهای زماندار»، بهتر است بدانید «حملات رهگیری» چگونه ممکن است اتفاق بیفتد و چرا «تراکنشهای زماندار» مهم هستند.
حمله قطع توپ
حمله «میانهگیری» الگوی زیر را دارد:
- آلیس پیامی اولیه، مانند «کنش درخواست نوشتن»، برای باب ارسال میکند.
- «حوا»، یک مرد میانجی، پیام را رهگیری میکند و مانع از دریافت آن توسط «باب» میشود، برای مثال ازطریق نوعی پارازیت رادیویی.
- آلیس که پاسخی از باب دریافت نمیکند، پیام دومی ارسال میکند.
- «حوا» دوباره پیام را رهگیری میکند و مانع از دریافت آن توسط «باب» میشود.
- «حوا» اولین پیام رهگیریشده را به «باب» ارسال میکند، انگار که ازطرف «آلیس» میآید.
- باب پاسخ را برای آلیس (و ایو) ارسال میکند.
- «حوا» پیام رهگیریشده دوم را برای بازپخش بعدی نگه میدارد. ازآنجاییکه باب هرگز پیام دوم اصلی رهگیریشده از آلیس را دریافت نکرده است، آن را میپذیرد. این پیام زمانی نشاندهنده نقض امنیت است که پیام فرمانی مثل «باز کردن قفل» را کدبندی کند.
«کنشهای زماندار» برای جلوگیری از این نوع حملهها، در ابتدای «تراکنش»، حداکثر «مهلت زمانی تراکنش» را تنظیم میکند. حتی اگر «حوا» بتواند شش مرحله اول بردار حمله را اجرا کند، بهدلیل منقضی شدن مهلت زمانی «تراکنش»، نمیتواند پیام را در مرحله ۷ بازپخش کند.
«تراکنشهای زماندار» پیچیدگی و تعداد «کنشها» را افزایش میدهد. بنابراین برای هر «تراکنشی» توصیه نمیشود، بلکه فقط برای عملیاتهای حیاتی در «دستگاههایی» که بر داراییهای امنیتی و حریم خصوصی فیزیکی یا مجازی کنترل دارند توصیه میشود.
انتزاعهای کیت توسعه نرمافزار
بخشهای خواندن تراکنشها، نوشتن تراکنشها، و فراخوانی تراکنشها نمای کلی سطح بالایی از «کنشهای مدل تعامل» انجامشده توسط «کیت توسعه نرمافزار» ارائه میدهند.
توسعهدهندهای که محصولی را بااستفاده از Matter SDK میسازد معمولاً برای اجرای مستقیم «کنشها» فراخوانی انجام نمیدهد؛ «کنشها» توسط توابع SDK انتزاعی میشوند که آنها را در یک «تعامل» کپسوله میکنند. بااینحال، درک «کنشهای IM» برای ارائه مهندس با مهارت خوب در قابلیتهای Matter و همچنین کنترل دقیق بر پیادهسازی کیت توسعه نرمافزار مهم است.