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 می باشد:
منبع: سیسوگ