پروتکل های اینترنت اشیا–۲

0
140
پروتکل های اینترنت اشیا-2
پروتکل های اینترنت اشیا-2

پروتکل های اینترنت اشیا–۲

در مطلب پیش، شناخت پروتکل های اینترنت اشیا را آغاز کردیم و در این مطلب و در بخش دوم آن به بررسی یکی از این پروتکل ها با نام MQTT خواهیم پرداخت.

پروتکل های اینترنت اشیا-۱
مطلب مرتبط

MQTT چیست؟

MQTT که مخفف Message Queue Telemetry Transport میباشد یکی از مهمترین پروتکل های توسعه داده شده در زمینه اینترنت اشیا میباشد که با شعار “توسعه داده شده برای شبکه های با پهنای باند کم” پای به عرصه رقابت گذاشت و در تقسیم بندی پروتکل ها برای جمع آوری داده از آن استفاده میشود و در واقع پروتکلی برای برقراری بهترین ارتباط میان دیوایس ها و انسان ها یا سرور میباشد که نوع خاصی از الگوی D2S است.

ساختار MQTT

پروتکل MQTT از مدل Publish/Subscribe برای ارتباط بین نودها استفاده می‌کند. در این روش هر نود می‌تواند منتشر کننده‌ی داده (Publisher) برای یک موضوع خاص باشد. این موضوع در پروتکل MQTT تاپیک نامیده میشود. به عنوان مثال دیوایسی که دمای محیط را اندازه‌گیری میکند، میتواند در هر زمان دلخواه، دمای اندازه‌گیری شده را به سوی سرور MQTT منتشر نماید. این داده می‌تواند یک عدد اعشاری باشد. این انتشار بر روی یک تاپیک که آن هم نام دلخواهی دارد، برای نمونه tempMohit، صورت می‌گیرد.

حالا هر دیوایسی که علاقه مند به دانستن این دما می‌باشد، به عنوان Subscriber به سرور MQTT اعلام میکند که من علاقه مند به دریافت داده‌های تاپیک tempMohit هستم. سرور هم داده‌های دریافتی از Publisher یک تاپیک را به Subscriber های آن تاپیک می‌رساند. بدین ترتیب در بستر MQTT عده‌ای منتشر کننده‌ی داده و عده‌ای علاقه مند به دریافت این داده ها میشوند و همه چیز به همین سادگی جلو میرود.

ساختار MQTT
معماری MQTT

معمولا از اصطلاح Broker برای سرور MQTT استفاده می‌کنند. در شکل زیر نمایی از معماری مبتنی بر پروتکل MQTT را مشاهده می‌کنید.

این استاندارد برای این طراحی شده است که وسائل بتوانند با کمترین حجم کد و سخت افزار مورد نیاز و همچنین یک پهنای باند کوچک به سرور کانکت مانده و منتظر ارسال اطلاعات و اجرای فرامین باشند. بزرگترین هدفی نیز که این استاندارد دنبال میکند همه گیر کردن ارتباط مبتنی بر شبکه برای تمام چیزهایی است که با عنوان اینترنت چیزها از آنها قرار است در آینده استفاده نمایند.

پروتکل MQTT  چگونه کار می کند؟

 یک Session در MQTT به چهار مرحله تقسیم می‌شود: اتصال، تصدیق هویت، ارتباط، و خاتمه. یک کلاینت با ایجاد یک اتصال TCP/IP با بروکر شروع می‌کند. این اتصال می‌تواند بر روی پورت استاندارد یا پورت جایگزینی که از سوی بروکر معرفی می‌شود انجام شود. هنگام اتصال، ممکن است از یک Session قبلی ادامه استفاده شود.

پورت‌های استاندارد این پروتکل ۱۸۸۳ برای اتصال معمولی (رمز نشده) و ۸۸۸۳ برای ارتباط رمز شده از طریق SSL/TLS می‌باشد. در هنگام دست دادن SSL/TLS کلاینت گواهی سرور را بررسی اعتبار می‌نماید. همچنین این امکان وجود دارد که در هنگام دست‌دادن کلاینت نیز گواهی خود را جهت بررسی اعتبار توسط سرور به آن ارائه نماید. گرچه این امکان در پروتکل تعریف نشده است، در حال حاضر به یک روال معمول برای بروکرهای MQTT تبدیل شده است.

استفاده از MQTT  برای اینترنت اشیا

با توجه به این که MQTT با در نظر گرفتن مسائل امنیتی طراحی نشده است، سابقا در شبکه‌های ذاتا امن برای کاربردهای خاص به استفاده می‌شده است. ضمنا با توجه به آزاد بودن فرم تاپیک‌ها در این پروتکل، درخت مذکور بسیار بزرگ و مدیریت آن پیچیده و مقیاس‌پذیری آن پایین خواهد بود.

همان طور که پیشتر گفته شد، این پروتکل یک مکانیز تصدیق هویت ابتدایی دارد که طی آن نام کاربری و کلمه عبور به طور متنی رمز نشده ارسال می‌گردند. در نتیجه برای امن کردن انتقال باید از SSL/TLS استفاده شود که متأسفانه پروتکل‌های سبکی محسوب نمی‌شوند.

تصدیق هویت کلاینت‌ها با گواهی‌های سمت کلاینت پردازش ساده‌ای نیست و راهی به جز استفاده از راهکارهای اختصاصی خارج از پروتکل برای این کار در MQTT وجود ندارد تا بتوان دسترسی اشیاء بر تاپیک‌هایی که مالک آن هستند را کنترل نمود. این امر تزریق عمدی یا سهوی پیام‌های آسیب‌رسان را در شبکه آسان می‌سازد. علاوه بر این برای گیرنده ممکن نیست که تشخیص دهد چه کسی پیامی را ارسال نموده است، مگر این که این اطلاعات در خود پیام آمده باشد.

تامین امنیت باید بر روی پروتکل MQTT و در قالب راهکار اختصاصی پیاده‌سازی گردد که این امر پیاده‌سازی را دشوار ساخته و تعامل بین سازندگان مختلف را سخت می‌سازد. علیرغم این دشواری‌ها، بسیاری از طراحان بر این باورند که MQTT نقش عمده‌ای در دنیای اینترنت اشیاء بازی خواهد نمود و اموری نظیر ردگیری انبار، خودرو، نظارت بر منابع، شبکه‌های پزشکی سطح بدن و … را تسهیل خواهد نمود.

نتیجه گیری

این پروتکل مرتبا در حال بهبود است و پیاده‌سازی‌های موجود از وب سوکت‌ها نیز که نقش عمده ای در ارتباط دو طرفه در دنیای وب دارند پشتیبانی می‌نماید. پروتکل MQTT انتخاب خوبی برای شبکه‌های بی‌سیم با وجود سطوح مختلف تأخیر به خاطر محدودیت‌های پهنای باند و اتصالات نامطمئن می‌باشد.

هرگاه اتصال بروکر با یک کلاینت مشترک به مشکلی برخورد نماید، بروکر پیام‌ها را در خود بافر می‌کند و به محض برخط شدن دوباره کلاینت به او ارسال خواهد نمود. هر گاه اتصال بروکر با یک کلاینت منتشر کننده به مشکلی برخورد نماید، بروکر می‌تواند اتصال را ببندد و پیام از پیش تعیین شده ای را برای تمامی مشترکان ارسال نماید.

شرکت Facebook اخیرا در پیام‌رسان خود از پروتکل MQTT استفاده نموده است. دلیل این امر نه تنها حفظ شارژ باتری گوشی‌ها در هنگام مبادله پیام بلکه امکان تبادل سریع و مؤثر پیام علیرغم نااطمینانی‌های موجود در شبکه اینترنت می‌باشد. وب‌سرویس‌های آمازون (AWS) نیز از پروتکل MQTT در کنار HTTP پشتیبانی می‌نماید تا امکان اتصال اشیای IoT نیز به Cloud فراهم گردد.

ارسال یک دیدگاه