الفرق بين بروتوكول COAP وبروتوكول MQTT في شبكات الحاسوب

اقرأ في هذا المقال


لا يوفر “MQTT” أي دعم لتصنيف الرسائل بأنواعها أو غيرها من البيانات التعريفية لمساعدة العملاء على فهمها، ويمكن استخدام رسائل “MQTT” لأي غرض ولكن يجب على جميع العملاء معرفة تنسيقات الرسائل مسبقاً للسماح بالاتصال، وعلى العكس من ذلك يوفر “CoAP” دعماً داخلياً للتفاوض على المحتوى واكتشافه ممّا يسمح للأجهزة بالتحقيق في بعضها البعض للعثور على طرق لتبادل البيانات.

ما هو بروتوكول COAP

بروتوكول التطبيق المقيد “COAP”: هو بروتوكول يعتمد على خادم المستخدم، وبمساعدة هذا البروتوكول تتم مشاركة حزمة “COAP” بين عقد العميل المختلفة والتي يتم توجيهها بواسطة خادم “COAP”، وهذا الخادم مسؤول عن مشاركة التفاصيل التي تعتمد على منطقه ولكن لا يتعين عليه التعرف عليها، ويتم استخدام “COAP” مع الطلب ممّا يساعد على نقل الحالة المصغرة وعلى عكس “MQTT” فهو غير منظم.

  • “MQTT” هي اختصار لـ “Message-Queuing-Telemetry-Transport”.
  • “COAP” هي اختصار لـ “Constrained-Application-Protocol”.

بنية بروتوكول COAP

مثل “HTTP” يُعد “CoAP” بروتوكولاً لنقل المستندات، وعلى عكس “HTTP” تم تصميم “CoAP” لتلبية احتياجات الأجهزة المقيدة، وحزم “CoAP” أصغر بكثير من تدفقات “HTTP TCP” ويتم استخدام “Bitfields” والتعيينات من السلاسل إلى الأعداد الصحيحة على نطاق واسع لتوفير مساحة، والحزم سهلة الإنشاء ويمكن تحليلها في مكانها دون استهلاك ذاكرة وصول عشوائي إضافية في الأجهزة المقيدة.

يعمل “CoAP” عبر “UDP” وليس “TCP” ويتواصل العملاء والخوادم من خلال مخططات البيانات غير المتصلة، كما يتم تنفيذ عمليات إعادة المحاولة وإعادة الترتيب في مكدس التطبيق وقد تسمح إزالة الحاجة إلى “TCP” بشبكات “IP” كاملة في ميكروكنترولر صغيرة، ويسمح “CoAP” باستخدام بث “UDP” والبث المتعدد في العنونة.

يتبع “CoAP” نموذج العميل / الخادم، ويقدم العملاء طلبات إلى الخوادم وترسل الخوادم الردود مرة أخرى ويمكن للعملاء الحصول على الموارد ووضعها ونشرها وحذفها، كما تم تصميم “CoAP” للتعامل مع “HTTP” وشبكة “RESTful” على نطاق واسع من خلال بروكسيات بسيطة، ونظراً لأنّ “CoAP” يعتمد على مخطط البيانات فيمكن استخدامه فوق الرسائل القصيرة وبروتوكولات الاتصالات الأخرى القائمة على الحزم.

  • “HTTP” هي اختصار لـ “Hypertext-Transfer-Protocol”.
  • “UDP” هي اختصار لـ “User-datagram-protocol”.
  • “TCP” هي اختصار لـ “Transmission-Control-Protocol”.
  • “IP” هي اختصار لـ “InternetProtocol”.

ما هو بروتوكول MQTT

بروتوكول القياس عن بُعد لاستعلام الرسائل “MQTT”: هو بروتوكول قائم على الاتصال ويتم استخدامه في أجهزة إنترنت الأشياء وتم تأسيس “MQTT” على إجراء النشر والاشتراك، حيث يحصل العملاء على التفاصيل من خلال وسيط فقط لموضوع الموافقة، والوسيط هو المفاوض الذي يصنف الرسائل التي هي في الأساس “ملصقات” قبل نقلها.

لا يساعد “MQTT” في تسمية الرسائل بأنواع أو مخطط آخر لمساعدة العملاء على فهمها، وتُستخدم الإخطارات لأغراض مختلفة، ولكن يجب على جميع العملاء إدراك ظهور الرسائل مقدماً للسماح بالاتصال ويوفر “COAP” مساعدة افتراضية على العكس من ذلك في مناقشة المحتوى، واكتشف الأجهزة التي تسمح بفحص بعضها البعض للعثور على طرق لتبادل البيانات.

بنية بروتوكول MQTT

  • يحتوي “MQTT” على نموذج عميل / خادم، حيث يكون كل جهاز استشعار عميلًا ويتصل بخادم ويُعرف باسم الوسيط عبر “TCP“.
  • “MQTT” هو رسالة موجهة، وكل رسالة عبارة عن جزء منفصل من البيانات وغير شفاف للوسيط.
  • يتم نشر كل رسالة على عنوان يُعرف بالموضوع، ويمكن للعملاء الاشتراك في مواضيع متعددة ويتلقى كل عميل مشترك في موضوع ما كل رسالة يتم نشرها في هذا الموضوع.
  • على سبيل المثال تخيل شبكة بسيطة بها ثلاثة عملاء ووسيط مركزي.
  • يفتح العملاء الثلاثة اتصالات “TCP” مع الوسيط، ويشترك العملاء B وC في درجة حرارة الموضوع.

الفرق بين بروتوكولات COAP وبروتوكول MQTT

الرقمبرتوكول COAPبروتوكول MQTT
1يرمز “COAP” إلى بروتوكول التطبيق المقيد.يرمز “MQTT” إلى نقل القياس عن بُعد للاستعلام عن الرسائل.
2للتواصل يستخدم نموذجاً أولياً للطلب والاستجابة.للتواصل يستخدم النموذج الأولي للنشر والاشتراك.
3يستخدم الرسائل غير المتزامنة والمتزامنة.يستخدم فقط الوضع غير المتزامن للرسائل.
4يستخدم بروتوكول مخطط بيانات المستخدم “UDP”.يستخدم بروتوكول التحكم في الإرسال “TCP”.
5حجم “CAOP” هو “4 بايت”.حجم “MQTT” هو “2 بايت”.
6إنّه قائم على “RESTful”.لا يقوم على “RESTful”.
7ليس لديها دعم المثابرة.يتم استخدامه بشكل أساسي للتواصل المباشر ولديه دعم مستمر.
8يعطي تسميات للرسائل.ليس لديها أي وظيفة من هذا القبيل.
9لديها نظام آمن وقابليتها للاستخدام في شبكات منطقة المرافق.إنّه آمن للغاية وقابليته للاستخدام في تطبيقات إنترنت الأشياء.
10لديها مشاكل انخفاض زمن الوصول و”NAT”.لديها مشاكل انخفاض زمن الوصول و”NAT”.

بالإضافة إلى ذلك يعتبر “MQTT” مناسباً تماماً إذا كنت تبحث عن بروتوكول خفيف الوزن وصديق للبطارية ومع ذلك ابتعد عمّا إذا كنت قلقاً بشأن مشكلات وقت الاستجابة، أو كنت تبحث عن بروتوكول إنترنت الأشياء يكون ملائماً للمطورين ويدعم التفاعل في الوقت الفعلي.

ويُعد “CoAP” خياراً جيداً إذا كنت ترغب في برمجة “RESTful” ولكن “HTTP + TLS / SSL” كبير جداً بالنسبة لبروتوكول الجهاز، ويمكن حل هذه المشكلة باستخدام “CoAP” مع “DTLS” ومع ذلك إذا كنت تبحث عن تكاليف أقل وموثوقية قصوى للرسالة فيجب عليك اختيار بروتوكول مختلف.

تحتاج عقد الاستشعار إلى بروتوكولات اتصال خفيفة الوزن تتيح الاتصال بشبكة يمكن من خلالها استرداد الأوامر وتحميل البيانات، وتحتاج هذه الأنظمة إلى التأكد من أنّ الأجهزة المقيدة ستعمل تماماً مثل الأجهزة غير المقيدة، وبروتوكول التطبيق المقيد “COAP” وإرسال القياس عن بعد لمهمة إلقاء الرسائل في قائمة انتظار “MQTT” هُما البروتوكولات الأكثر معرفةً.

تم بناء نظامين لاختبار هذه فيما يتعلق بتأخير الاتصال وحركة مرور الشبكة وتم العثور على أنّ “COAP” تحتوي في المتوسط ​​على أحجام حزم أصغر ولا توجد رسائل نشطة، و”MQTT” لديها تأخير اتصال أقل وأبسط في التنفيذ، وتم تصميم “COAP” جيداً للتفاعل مع الأنظمة التي تعمل على بروتوكول نقل النص التشعبي “HTTP”.

بينما تم تصميم “MQTT” للعمل بشكل جيد مع إعادة توجيه الرسائل تلقائياً إلى عملاء متعددين دون أي تكوين إضافي، حيث تتمتع “MQTT” أيضاً بجودة الخدمة “QoS” المضمنة في التصميم لضمان تسليم الرسائل.

  • “QoS” هي اختصار لـ “Quality-of-Service”.
  • “TLS” هي اختصار لـ “Transport-Layer-Security”.
  • “DTLS” هي اختصار لـ “Datagram-Transport-Layer-Security”.
  • “SSL” هي اختصار لـ “Secure-Sockets-Layer”.

الاختلافات الرئيسية بين بروتوكول CoAP وبروتوكول MQTT

يُعد كل من “MQTT” و”CoAP” مفيداً كبروتوكولات إنترنت الأشياء لكن لهما اختلافات جوهرية، و”MQTT” هو بروتوكول اتصال متعدد إلى متعدد لتمرير الرسائل بين عدة عملاء من خلال وسيط مركزي، كما يفصل المنتج والمستهلك عن طريق السماح للعملاء بالنشر وجعل الوسيط يقرر مكان توجيه الرسائل ونسخها وبينما تتمتع “MQTT” ببعض الدعم للمثابرة إلّا أنّها تعمل بشكل أفضل كناقلة اتصالات للبيانات الحية.

يعتبر “CoAP” بروتوكول واحد لواحد لإرسال معلومات الوضع بين العميل والخادم، ولكنّه يساند مراقبة الموارد، إلّا أنّ “CoAP” هو الأنسب لنموذج نقل الحالة وليس استناداً إلى الأحداث البحتة ويقوم عملاء “MQTT” بإجراء اتصال “TCP” صادر طويل الأمد إلى وسيط، ولا يمثل هذا عادةً مشكلة للأجهزة التي تعمل خلف “NAT“.

يعمل كل من عملاء وخوادم “CoAP” بإرسال واستلام حزم “UDP” وفي بيئات “NAT” يمكن استعمال الاتصال النفقي أو إعادة توجيه المنفذ للسماح لـ “CoAP”، أو قد تبدأ الأجهزة أولاً الاتصال بالطرف الرئيسي كما هو الحال في “LWM2M”.

  • “LWM2M” هي اختصار لـ “Understanding-Lightweight- M2M-protocol”.
  • “NAT” هي اختصار لـ “network-address-translation”.

أوجه التشابه بين بروتوكول CoAP وبروتوكول MQTT

  • كلاهما معايير مفتوحة لإنترنت الأشياء.
  • كلاهما مناسب بشكل أفضل للبيئات المقيدة من “HTTP”.
  • أنّها توفر آليات للاتصال غير المتزامن.
  • كلاهما يعمل على “IP”.
  • وكلاهما لديه مجموعة من التطبيقات.
  • توفر منطقة تنفيذ.

المصدر: COMPUTER NETWORKING / James F. Kurose & Keith W. RossComputer Networks - The Swiss BayCOMPUTER NETWORKS LECTURE NOTES / B.TECH III YEAR – II SEM (R15)An Introduction to Computer Networks / Peter L Dordal


شارك المقالة: