MQTT


گردآورنده: بهاره مسعودی

((MQTT (MQ Telemetry Transport) یک پروتکل پیام رسانی سبک وزن است و امکان توزیع اطلاعات را در شبکه هایی که با محدودیت منابع مواجه هستند، فراهم می کند. این پروتکل، از یک الگوی ارتباطی انتشار / اشتراک در راستای ارتباط دستگاه به دستگاه (M2M) استفاده می کند، و  همچنین نقش مهمی در آیوتی ایفا می کند. MQTT دستگاه های آیوتی را قادر می سازد تا اطلاعات مربوط به یک موضوع معین را به یک سرور که به عنوان یک کارگزار پیام MQTT عمل می کند، ارسال و یا منتشر کند.

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

 

تاریخچهMQTT

MQTT توسط دکتر اندی استنفورد کلارک از IBM  در سال 1999 به عنوان راهکار مقرون به صرفه و قابل اعتماد برای اتصال دستگاه های نظارت و همچنین در صنایع نفت و گاز به سرورهای سازمانی راه دور ایجاد شده است. اگر چه این پروتکل هنوز هم با IBM مرتبط است، در حال حاضر یک پروتکل باز است که توسط سازمان برای پیشرفت استانداردهای اطلاعات ساختاری (OASIS) نظارت دارد.

 

  MQTTچگونه کار می کند

مراحل کار در این پروتکل به چهار مرحله تقسیم می شود: اتصال، تأیید هویت، ارتباطات و خاتمه دادن.

ابتدا Client یک ارتباط TCP/IP را بر روی یک پرت استاندارد با سرور برقرار می کند. پورت های استاندارد 1883 برای ارتباطات بدون رمزگذاری و 8883 برای ارتباط رمزگذاری شده با استفاده از SSL / TLS هستند. در طول برقراری ارتباط SSL / TLS کلاینت احراز هویت می شود. از آنجا که پروتکل MQTT قصد دارد که یک پروتکل برای دستگاه های دارای محدودیت منابع و آیوتی باشد،ممکن است SSL / TLS در بعضی موارد مطلوب نباشد. در چنین مواردی، احراز هویت به عنوان نام کاربری و رمز عبور متن ساده ارائه شده توسط کلاینت به سرور به عنوان بخشی از دنباله بسته CONNECT / CONNACK ارائه می شود. MQTT یک پروتکل سبک وزن نامیده می شود زیرا تمام پیام های آن دارای رد پای کد هستند همچنین دارای سه سطح مختلف کیفیت QOS می باشد. اگرچه سطح بالاتری از QoS ها قابل اعتماد تر هستند، اما آنها دارای الزامات زمان بندی و پهنای باند بیشتری هستند، بنابراین مشتریان مشترک می توانند بالاترین سطح QoS را که آنها می خواهند دریافت کنند، تعیین می کنند.

در طی مرحله ارتباط، مشتری می تواند عملیات انتشار، اشتراک، لغو اشتراک و پینگ را انجام دهد. در عملیات انتشار یک بلوک دودویی از داده ها - محتوا را به یک موضوع که توسط ناشر تعریف شده است ارسال می کند. اندازه پیام ارسالی در این پروتکال می تواند تا 256 مگابایت باشد. همچنین فرمت آن نیز خاص است به این صورت که اشتراک موضوع با استفاده از یک جفت بسته SUBSCRIBE / SUB ACK ساخته می شود و لغو اشتراک با استفاده از یک بسته یابی UNSUBSCRIBE / UNSUB ACK انجام می شود.

هنگامی که ناشر می خواهد یک جلسه MQTT را خاتمه دهد، یک پیام DISCONNECT را به سرور ارسال می کند و سپس اتصال را قطع می کند در این صورت به مشتری امکان می دهد که به راحتی با ارائه هویت مشتری و بازگرداندن جایی که آن را ترک کرده است، به راحتی دوباره متصل شود.

 

mqtt

 

 

کاربرد ها

فیس بوک در حال حاضر از برنامه MQTT برای پیام رسان خود استفاده می کند نه تنها به این دلیل که پروتکل با استفاده از پیام های تلفن همراه به مصرف باتری صرفه جویی می کند بلکه به رغم اتصالات اینترنت متداول در سراسر جهان پروتکل ها را قادر می سازد که پیام ها در میلی ثانیه انتقال دهند. اکثر ارائه دهندگان عمده خدمات ابری، از جمله AWS، Google Cloud، IBM Bluemix و مایکروسافت لاورو، از MQTT پشتیبانی می کنند. MQTT برای برنامه های کاربردی با استفاده از دستگاه های M2M و آیوتی برای تجزیه و تحلیل های زمان واقعی، نگهداری پیشگیرانه و نظارت،همچنین در محیط هایی مانند خانه های هوشمند، مراقبت های بهداشتی، تدارکات، صنعت و تولید، بسیار مناسب است.

 

چالش ها

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

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

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

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


مطالب مرتبط


منابع