CoAP چیست ، وقتی صحبت از دنیای دیجیتال و خانه های هوشمند و تکنولوژی روز دنیا در خصوص چیزنت میشه،همه چیز به اندازه کافی جذاب و سرگرم کننده است که شاید کمتر کسی به بستر ارتباطی فکر کنه ، در صورتی که تمام این اتفاقات ممکن نیست مگر با اسنفاده از یک بستر سریع و چالاک و البته سبک. سبک منظور به لحاظ پیاده سازی است ، همانطور که آگاه هستید بیشتر دستگاه های IOT امروزه از میکروپردازنده ها و میکروپروسسور ها استفاده می کنند و امکان ندارد قادر به پیاده سازی پروتکل های پیچیده نظیر ssh یا https یا حتی http به صورت کاربردی باشند، نمی توان انتظار داشت که درون لامپ های led که هوشمند هستند یک پردازنده قوی به همراه مقدار قابل توجهی RAM و ROM وجود داشته باشد. پس لازم است پروتکل های ارتباطی به نحوی طراحی شوند که در دستگاه هایی با مقدار حافظه و قدرت پردازشی محدود قابل پیاده سازی باشند. قبلا در مقاله ” MQTT چیست؟ ” پروتکل MQTT را معرفی کردیم در این مقاله قصد داریم که به معرفی پروتکل CoAP بپردازیم. پس با سیسوگ همراه باشید.
CoAP – Constrained Application Protocol چیست؟
وقتی صحبت از اینترنت اشیاء ( چیزنت , اینترنت چیزها ) میشه بی شک CoAP در کنار MQTT خودنمایی میکند. CoAP نیز شبیه MQTT یک پروتکل سبک ارتباطی است که در اینترنت چیزها کاربرد زیادی دارد. این پروتکل برای ارتباط ماشین و ماشین ( M2M ) طراحی شده که کلیه موارد مصرف اینترنت چیزها را شامل میگردد. بگذارید کمی وارد جزئیات پروتکل CoAP شویم و با مشخص کردن برخی تفاوتهای این پروتکل نسبت به MQTT در مورد آن کمی بیشتر بدانیم.
برخی خصایص ویژه CoAP:
- توانایی انتقال اطلاعات RESTful API (در ادامه توضیح مختصری در مورد این پروتکل داده شده) در شبکه هایی با منابع محدود
- طراحی شده جهت سیستمهایی با منابع بسیار کم مثلا IOT Device – اینترنت چیزها
- استفاده از پروتکل UDP جهت انتقال اطلاعات (شاید یکی از نقاط ضعیف)
- جهت ارتباط به حافظه و قدرت پردازشی کمی نیاز دارد (منابع محدود).
- پروتکل طراحی شده برای شبکه هایی با منابع محدود ( مثلا سیستمهای IOT)
RESTful API چیست ؟
که REST مخفف Representational State Transfer میباشد که یک پروتکل ساده در دنیای وب جهت تبادل اطلاعات مبتنی بر وب میباشد. برای استفاده از RESTful API، چهار متد تعریف گردیده است :
– GET: برای دریافت و خواندن اطلاعات
– POST: برای ساخت و ارسال اطلاعات
– PUT: برای تغییر و جایگزین کردن اطلاعات
– DELETE: برای حذف اطلاعات
برای اطلاعات بیشتر در مورد این پروتکل میتوانید به این ادرس مراجعه کنید.
مقایسه coap و MQTT :
در تصویر زیر پروتکل MQTT و نحوه ارتباط بین Broker ( کارگزار ) و Node ها یا همان دیوایس ها مشخص شده است
در تصویر بالا کاملا مشخص است که یک NODE (کلاینت یا وسیله) نمیتواند به وسیله دیگری ارسال اطلاعات داشته باشد مگر اینکه از بستر Broker (سرور و یا کارگزار مربوطه)استفاده نماید. همچنین در پروتکل MQTT به محض رسیدن یک پیام به بروکر یا کارگزار بقیه کلاینت ها نیز میتوانند اطلاعات را برداشته و یا مشاهده نمایند. در پروتکل MQTT تغییر اطلاعات توسط Broker و یا واسطه ای دیگر دیده نشده است و صرفا بروکر ها وظیفه تبادل اطلاعات بین دستگاه ها را بر عهده دارند و اگر تمایل به تغییر اطلاعات دارید باید پیام های خاصی جهت تغییر ایجاد و ارسال نمایید.
در پروتکل CoAP کلاینت یا NODE به عنوان مرکز ارتباطی مطرح میشود و میتواند همزمان با چندین سرور و ارایه دهنده سرویس ارتباط برقرار کند که البته این نوع ساختار محاسن و معایب خاص خود را دارد. یکی از معایت بالارفتن حجم پردازشی و ترافیک مصرفی است آن هم در هنگامی که لازم است دیتای Node توسط چند مرکز مختلف دنبال و بررسی شوند در این صورت لازم است که Node داده را به چند مقصد مختلف مخابره کند این شیوه عمل باعث کند شدن و مصرف ترافیک خواهد شد.
coap بهتر است یا MQTT ؟
بگذارید در آخر برخی موارد را جمع بندی کنیم؛ مطمئنا پروتکل MQTT پروتکل بهتری جهت ارتباط چندین دیوایس (کلاینت) با هم، آن هم وقتی که ارتباطات ضعیف و احتمال قطعی دارند میباشد در MQTT بروکر و یا کارگزار مرکز این ارتباط میباشد از طرفی به دلیل استفاده از TCP دارای امنیت بالاتری هم هست.
اما CoAP پروتکل بهتری میباشد در مواقعی که ارتباط مبتنی بر ارتباط کلاینت با سرور میباشد و ارتباطات با سرور پایدار باشد و البته یک کلاینت میتواند در اطلاعات موجود در سرور دستکاری هم نماید.
هر دو پروتکل جهت شبکه های کوچک و و کلاینتهایی با مصرف انرژی پایین طراحی شده اند هر دو پروتکل جهت IOT پرکاربرد میباشند. هر دو پروتکل میتواند امنیت اطلاعات را تضمین نماید پروتکل MQTT مبتنی بر SSL و CoAP مبتنی بر DTLS
در صورتیکه سسیتم شما بصورت کلاینت سرور طراحی شده است و شبکه مطمئن ارتباطی با سرور دارد شاید CoAP بهترین گزینه باشد ولی در صورتیکه مصرف انرژی در کلاینت بسیار اهمیت دارد و لزوم به حالت کم مصرف رفتن کلاینت ها و همچنین ارتباط ناپایدار شبکه ای وجود دارد بی شک MQTT بهترین گزینه خواهد بود.
البته واقعیتی که در سرچ گوگل مشخص هست محبوبیت و کاربرد بیشتر MQTT نسبت به COAP می باشد:
آموزش تصویری زیر نیز میتواند دید مناسبی از CoAP و مقایسه اون با MQTT بدهد: