مدل داده (DM) یک گره مرتبط نیست اگر نتوانیم عملیاتی را روی آنها انجام دهیم. مدل تعامل ( IM )، رابطه DM یک گره را با DM سایر گره ها تعریف می کند: یک زبان مشترک برای ارتباط بین DM ها.
گره ها با یکدیگر تعامل دارند:
- خواندن و اشتراک در ویژگی ها و رویدادها
- نوشتن به صفات
- فراخوانی دستورات
هرگاه یک گره یک توالی ارتباط رمزگذاری شده با گره دیگر ایجاد کند، آنها یک رابطه تعامل را تشکیل می دهند. فعل و انفعالات ممکن است از یک یا چند تراکنش تشکیل شده باشد، و تراکنش ها از یک یا چند کنش تشکیل شده اند که می توانند به عنوان پیام های سطح IM بین گره ها درک شوند.
چندین اقدام در تراکنش ها پشتیبانی می شوند، مانند یک اقدام درخواست خواندن که یک ویژگی یا رویداد را از گره دیگری درخواست می کند، یا پاسخ آن، اقدام گزارش داده، که اطلاعات را از سرور به مشتری برمی گرداند.
آغازگر و اهداف
گره ای که یک تراکنش را آغاز می کند آغازگر است، در حالی که گره ای که پاسخ می دهد هدف است. معمولاً Initiator یک Client Cluster و Target یک Server Cluster است. با این حال، استثناهایی برای این الگو وجود دارد، مانند تعاملات اشتراک که در ادامه در این بخش تجزیه و تحلیل شده است.
گروه ها
گره ها در Matter ممکن است متعلق به یک گروه باشند. گروه دستگاه ها مکانیزمی برای آدرس دهی و ارسال پیام به چندین دستگاه در یک عمل به طور همزمان است. همه گرهها در یک گروه یک شناسه گروه یکسان دارند، یک عدد صحیح 16 بیتی.
برای انجام ارتباطات در سطح گروه ( Groupcast )، Matter از پیامهای Multicast IPv6 استفاده میکند و همه اعضای گروه دارای آدرس Multicast یکسان هستند.
مسیرها
هر زمان که بخواهیم با یک ویژگی، رویداد یا فرمان تعامل داشته باشیم، باید مسیر این تعامل را مشخص کنیم: مکان یک ویژگی، رویداد یا فرمان در سلسله مراتب مدل داده یک گره. اخطار این است که مسیرها همچنین ممکن است از گروهها یا اپراتورهای Wildcard برای آدرس دهی همزمان چندین گره یا خوشه استفاده کنند، این تعاملات را جمع میکنند و در نتیجه تعداد کنشها را کاهش میدهند.
این مکانیسم برای افزایش پاسخگویی ارتباطات مهم است. به عنوان مثال، زمانی که کاربری میخواهد همه چراغها را خاموش کند، یک دستیار صوتی میتواند به جای دنبالهای از تعاملات فردی، یک تعامل واحد با چندین چراغ در یک گروه برقرار کند. اگر Initiator با هر نور تعاملات فردی ایجاد کند، می تواند تأخیر قابل درک برای انسان در پاسخگویی دستگاه ایجاد کند. این اثر باعث می شود چندین دستگاه به یک فرمان با تاخیرهای قابل مشاهده بین آنها واکنش نشان دهند. این اغلب به عنوان "اثر پاپ کورن" نامیده می شود.
یک Path in Matter را می توان با استفاده از یکی از گزینه های زیر جمع آوری کرد:
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
و در این بلوکهای ساخت مسیر، endpoint
و cluster
ممکن است شامل اپراتورهای Wildcards برای انتخاب بیش از یک نمونه Node نیز باشد.
زمان دار و بی زمان
دو روش برای انجام یک تراکنش Write یا Invoke وجود دارد: زماندار و بدون زمان . تراکنشهای زمانبندیشده حداکثر مهلت زمانی را برای ارسال اقدام Write/Invoke ایجاد میکنند. هدف از این تایم اوت جلوگیری از حمله رهگیری به تراکنش است. مخصوصاً برای دستگاههایی که به داراییها دسترسی دارند، مانند درب بازکنها و قفلهای گاراژ، معتبر است.
برای درک تراکنشهای زمانبندیشده، درک اینکه چگونه حملات رهگیری میتوانند اتفاق بیفتند و چرا تراکنشهای زماندار مهم هستند، مفید است.
حمله رهگیری
یک حمله رهگیری دارای الگوی زیر است:
- آلیس یک پیام اولیه مانند یک اقدام درخواست نوشتن برای باب می فرستد.
- ایو، یک مرد میانی، پیام را رهگیری می کند و از دریافت آن باب جلوگیری می کند، برای مثال از طریق نوعی پارازیت رادیویی.
- آلیس که پاسخی از باب دریافت نمی کند، پیام دوم را ارسال می کند.
- ایو دوباره رهگیری می کند و از دریافت باب جلوگیری می کند.
- ایو اولین پیام رهگیری شده را برای باب می فرستد، گویی از آلیس می آید.
- باب پاسخ را برای آلیس (و حوا) می فرستد.
- حوا دومین پیام رهگیری شده را برای پخش مجدد بعدی نگه می دارد. از آنجایی که باب هرگز دومین پیام رهگیری شده اصلی را از آلیس دریافت نکرد، آن را می پذیرد. هنگامی که پیام دستوری مانند "قفل باز" را رمزگذاری می کند، این پیام نشان دهنده یک نقض امنیتی است.
برای جلوگیری از این نوع حملات، Timed Actions حداکثر زمان پایان تراکنش را در شروع تراکنش تعیین می کند. حتی اگر ایو موفق شود شش مرحله اول بردار حمله را اجرا کند، به دلیل مهلت زمانی منقضی شده در تراکنش، قادر به پخش مجدد پیام در مرحله 7 نخواهد بود.
تراکنش های زمان دار پیچیدگی و تعداد اقدامات را افزایش می دهند. بنابراین، آنها برای هر تراکنش توصیه نمیشوند، بلکه فقط برای عملیات حیاتی روی دستگاههایی توصیه میشوند که بر امنیت فیزیکی یا مجازی و داراییهای حریم خصوصی کنترل دارند.
انتزاعات SDK
بخشهای خواندن تراکنشها ، نوشتن تراکنشها ، و فراخوانی تراکنشها نمای کلی سطح بالایی از اقدامات مدل تعامل انجام شده توسط SDK را ارائه میدهند.
توسعهدهندهای که محصولی را ایجاد میکند که از Matter SDK استفاده میکند، معمولاً تماسهایی را برای اجرای مستقیم Actions انجام نمیدهد. کنشها توسط توابع SDK انتزاع میشوند که آنها را در یک Interaction کپسوله میکند. با این حال، درک اقدامات IM برای ارائه مهارت خوب مهندس در قابلیتهای Matter و همچنین کنترل دقیق بر اجرای SDK مهم است.