پروتکل MQTT

در مرکز محتوای سرور دات آی آر

mqtt-logo

 

در این مقاله با پروتکل شبکه ی MQTT آشنا می شویم و در پایان نیز طریقه ی فعال سازی این پروتکل بر روی یک Virtual Machine را به صورت مرحله به مرحله طی میکنیم.

پروتکل MQTT چیست؟

پروتکل شبکه ی  MQTT  (Message Queuing Telemetry Transport) پروتکل پیام رسانی استاندارد در اینترنت اشیا (Internet of Things) می باشد . این پروتکل کم حجم، بر پایه ی انتشار/اشتراک و یا همان Publish/Subscribe می باشد که برای پیام رسانی بین دستگاه ها ازین پروتکل استفاده می شود و مطابق آمار این پروتکل پر استفاده ترین پروتکل در اینترنت اشیا (IoT) می باشد. همچنین این پروتکل بیشترین سازگاری را برای اجرا با پروتکل TCP/IP  دارد، ولی با این حال هر پروتکل دیگری که ارتباط دو جهتی را فراهم کند میتواند از MQTT پشتیبانی کند.

 

چرا MQTT ؟

– سبک و کار آمد

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

– ارتباط دو طرفه

پروتکل MQTT  یک ارتباط دو طرفه برای پیام رسانی میان دستگاه و فضای ابری و بالعکس ایجاد میکند و همین امر باعث سهولت در پیام رسانی میگردد.

– با ثبات در ارسال پیام

با ثبات بودن و سطح اطمینان بالا در پیام رسانی در اینترنت اشیا مهم است. به همین دلیل است که MQTT دارای 3 سطح کیفیت خدمات تعریف شده است:

حداکثر یک بار  ،حداقل یک بار  ،دقیقاً یک بار

– مناسب برای شبکه های پرنوسان

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

– امنیت بالا

MQTT از رمزگذاری دیتا با استفاده از پروتکل TLS استفاده میکند و احراز هویت سرویس گیرنده با استفاده از پروتکل های مدرن احراز هویت ، مانند OAuth را آسان می کند.

 

 

 

معماری انتشار/اشتراک در پروتکل MQTT

 

mqtt-publish-subscribe

در پروتکل MQTT دو رکن اساسی وجود دارد که شامل کلاینت ( کاربر) و یک اتصال دهنده (سرور) می باشد، که کاربر به سرور متصل می شود که به این سرور در اصطلاح  Brokerگفته می شود. پروتکل MQTT بر پایه ی Publish و Subscribe می باشد. در معماری انتشار و اشتراک کاربر  می‌تواند نقش یک انتشار دهنده اطلاعات ( Publisher ) و یا دریافت کننده اطلاعات را داشته باشد. دیتا در تاپبک‌ها (Topics) مرتب شده است. زمانیکه کاربر دیتای جدیدی را منتشر میکند، یک پیام کنترل با دیتا به واسط اتصال دهنده یا همان Broker ارسال می‌کند. واسط‌ها ( Broker) دیتا را به هر کاربری که در آن تاپیک مشترک است، توزیع می‌کند. انتشار دهنده نیازی به دانستن تعداد و محل مشترکین (Subscriber) ها ندارد .

تاپیک ها، تگ هایی است که توسط Broker برای فیلتر کردن پیام ها برای هرکاربر که به بروکر متصل است استفاده می شود.

 

Mosquitto چیست؟

Mosquitto در پروتکل MQTT  یک واسط (broker)  پیام open source است که پروتکل های MQTT را پیاده سازی می کند. با پشتیبانی خوب، سهولت در نصب ، به یکی از محبوب ترین بروکر های MQTT تبدیل شده است.

نحوه ی نصب و پیکربندی یک سرور Mosquitto بر روی سیستم عامل Ubuntu 16.4

پیش نیازها :

  • یک سرور اوبونتو 16.04 با دسترسی root
  • باز کردن پورت TCP: 1883 در فایروال

 

قدم اول : نصب سرویس Mosquitto بر روی سرور

با استفاده از دستور های زیر ابتدا پکیج های OS را اپدیت کرده و سپس آخرین نسخه ی Mosquitto را نصب نمایید سرویس mosquito  پس از نصب به صورت خودکار فعال میگردد.:


sudo apt-get update


sudo apt-get install mosquitto

قدم دوم : نصب MQTT Client

mosquitto clients به ما کمک میکند تا از طریق command line اقدام به تست پروتکل MQTT بپردازیم.

برای تست این مورد از دو command line استفاده میکنیم یکی برای به اشتراک گذاشتن تاپیک “تست” و از command line دیگر برای نشر دیتا استفاده میکنیم.

برای نصب Mosquitto clients از کامند زیر استفاده می کنیم:


sudo apt-get install mosquitto-clients

برای به اشتراک گذاشتن یک تاپیک به عنوان “تست” از کامند زیر استفاده می شود:

 

"mosquitto_sub -t "test

و برای منتشر کردن یک پیام در تاپیک تست ایجاد شده از کامند زیر استفاده می شود:

به عنوان سرور دوم به ترمینال سرور وارد شوید و یک پیام را از طریق کامند زیر در تاپیک “تست” منتشر نمایید.

 

"mosquitto_pub -m "message from mosquitto_pub client" -t "test

قدم سوم : بالا بردن امنیت سرویس با تنظیم کردن یک پسوورد

برای ست کردن یک پسوورد بر روی سرویس mosquitto  از طریق  کامند زیر عمل میکنیم:

sudo mosquitto_passwd -c /etc/mosquitto/passwd dave

Password: password

پس از ست کردن پسوورد از طریق کامند زیر لازم است یک فایل کانفیگ برای mosquitto ایجاد نماییم که به فایل پسووردی که ایجاد کردیم اشاره داشته باشید:

sudo nano /etc/mosquitto/conf.d/default.conf

در فایل کانفیگ ساخته شده پارامترهای زیر را وارد کرده و فایل را ذخیره کرده و خارج شوید.

allow_anonymous false

password_file /etc/mosquitto/passwd

 

سپس از طریق دستور زیر سرویس mosquitto  را یک مرتبه ریستارت میکنیم و تغییرات اعمال شده را بررسی میکنیم.

sudo systemctl restart mosquitto

در حال حاضر از طریق دستور زیر میتوانیم اقدام به انتشار یک پیام از با استفاده از user name  و password  نماییم:

"mosquitto_pub -t "test" -m "message from mosquitto_pub client" -u "dave" -P "password

ما اکنون یک سرور MQTT محافظت شده با رمز عبور تنظیم کرده ایم. می توانید از IP سرور اوبونتو خود به عنوان بروکرMQTT برای پروژه های خود استفاده کنید.

با تشکر از همراهی شما برای مشاهده ی مقاله های بیشتر میتوانید بخش مقالات را مطالعه بفرمایید.

اشتراک گذاری در linkedin

به تیم متخصص ما اعتماد کنید!

تخفیف مخاطبین مرکز محتوا: Blog01

از کد Blog01 می‌تونید برای خرید اشتراک خدمات سرور مجازی و هاست استفاده کنید و از %10 تخفیف تو سفارش این خدمات بهره‌مند بشید!

محتوای مقاله مفید بود؟

5 1 رای
این مقاله چطور بود؟
اشتراک در
اطلاع از
0 دیدگاه
بازخوردهای آنلاین
مشاهده همه دیدگاه ها