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

برای اتصال سنسورها به یکدیگر پروتکل های مختلفی در اینترنت اشیاء مورد استفاده قرار می گیرند. یکی از پر کاربردترین آنها در دنیای اینترنت اشیاء پروتکل ارتباطی RFC 7252 معروف به پروتکل CoAP است که مخفف عبارت Constrained Application Protocol می باشد. پروتکل CoAP یک پروتکل نرم افزاری لایه کاربرد بوده که در دستگاه های الکترونیکی بسیار ساده مورد استفاده قرار می گیرد در واقع این پروتکل قابلیت اجرا در دستگاه‌ های هوشمند با منابع حافظه و پردازش محدود را دارد.

با وجود شباهت پروتکل CoAP به پروتکل HTTP این پروتکل از انواع پکت های UDP که نسبتاً سبک‌ تر از TCP هستند استفاده می کند. CoAP را می توان بر روی اکثر دستگاه هایی که از UDP یا آنالوگ UDP پشتیبانی می کنند اجرا کرد. از طرفی پروتکل CoAP را رقیب پروتکل MQTT می دانند. هر کدام از این پروتکل ها در جاهای مختلفی مورد استفاده قرار می گیرند.

انواع لایه های CoAP

پروتکل CoAP مانند MQTT در لایه application قرار دارد اما خود پروتکل CoAP دارای دو لایه متفاوت می باشد. این لایه ها Message و Request/Response نام دارند.

لایه Message از ۴ نوع پیام پشتیبانی می‌کند که شامل:

  • قابل تائید (Confirmable)
  • غیر قابل تائید (Non confirmable)
  • تائید (Acknowledgment)
  • تنظیم مجدد (Reset)

لایه Message برای ارسال مجدد بسته های از دست رفته منظور شده است. روش کار به این صورت می باشد که پیام قابل تائید (Con) با مشخصه خاص به سمت سرور ارسال می شود و تا زمانی که پیام تائید (Ack) با همان مشخصه دریافت نشود این ارسال ادامه خواهد داشت. در صورت مواجه شدن سرور با خطا یک پیام تنظیم مجدد (Rst) به جای پیام تائید (Ack) ارسال شده و Con می تواند مجدد ارسال شود. پیام های غیر قابل تائید نیازی به تائید سرور (Ack) ندارند و در واقع حاوی اطلاعات خوانده شده توسط سنسورها هستند با این وجود این پیام ها نیز یک شناسه خاص دارند.

Coap layers

لایه Request/Response دومین بخش در لایه انتزاع CoAP است و شامل روش های GET ،PUT ،POST و DELETE می باشد. همانطور که گفته شد درخواست با یک پیام con یا non داده می شود. در تمام پیام ها یک token وجود دارد که با شناسه پیام متفاوت می باشد. در اینجا token برای مقایسه req/resp استفاده می شود. بسته به اینکه آیا سرور می تواند بلافاصله به درخواست کلاینت پاسخ دهد یا خیر چندین سناریو وجود دارد:

  1. اگر سرور نتواند به درخواست کلاینت بلافاصله پاسخ دهد با یک پاسخ خالی یک پیام تائید را ارسال می کند. به محض دسترسی سرور یک پیام قابل تأیید جدید را برای کلاینت ارسال می کند. در این مرحله، کلاینت یک پیام ack را به سرور ارسال می کند.
  2. در صورتی که جواب بلافاصله داده شود در جواب پیام con یک پیام ack با همان شناسه داده می شود.
  3. در صورت شکست و یا ناموفق بودن پیام یک پیام خطا از سمت سرور به کلاینت داده می شود.
Coap-MQTT

مقایسه CoAP و MQTT :

MQTT از مدل Publish/Subscrib برای ارتباط خود استفاده می کند. در پروتکل MQTT به محض رسیدن یک پیام به بروکر (Broker) بقیه کلاینت ها نیز می‌توانند اطلاعات را برداشته و یا مشاهده نمایند. بروکرها وظیفه تبادل اطلاعات بین دستگاه ها را بر عهده دارند و اگر تمایل به تغییر اطلاعات دارید باید پیام های خاصی جهت تغییر ایجاد و ارسال نمایید.

پروتکل CoAP در اصل یک پروتکل یک به یک است. در پروتکل CoAP کلاینت یا NODE به عنوان مرکز ارتباطی مطرح می‌شود و می‌تواند هم زمان با چندین سرور و ارائه دهنده سرویس ارتباط برقرار کند. یکی از معایبی که این نوع ساختار دارد بالا رفتن حجم پردازشی و ترافیک مصرفی در زمانی است که لازم است دیتای Node توسط چند مرکز مختلف دنبال و بررسی شوند در این صورت لازم است که Node داده را به چند مقصد مختلف مخابره کند. این شیوه باعث کند شدن و مصرف ترافیک خواهد شد.

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

این پست چقدر مفید بود؟

برای امتیاز دادن به آن روی یک ستاره کلیک کنید!

میانگین امتیاز ۳.۵ / ۵. تعداد آرا: ۶

تاکنون رأی نداشته است! اولین کسی باشید که این پست را ارزیابی می کنید