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