آشنایی با پروتکل CoAP
پروتکل CoAP مخفف عبارت Constrained Application Protocol بوده و یک پروتکل ویژه در لایه اپلیکیشن و اینترنت با کاربرد استفاده در سطح دیوایسهایی با سورسهای سختافزاری محدود است. این پروتکل به چنین دیوایسهایی _ که “node” نامیده میشوند_این قابلیت را میدهد تا در سطحی وسیعتر مانند اینترنت، با پروتکلهایی مشابه خود، بتوانند صحبت کنند.
بهتر است قبل از ادامه مطلب، این قرارداد را با خودمان ببندیم که پس از این، منظور از عبارت “دیوایسهای محدود” ، وجود محدودیت در سورسهای سخت افزاری آنهاو منظور از “شبکههای محدود”، شبکههایی ست که شامل دیوایسهای محدود هستند.
بطور کلی CoAP طوری طراحی شده است تا امکان صحبت را به:
- دیوایسهایی که بر روی یک شبکه محدود هستند
- دیوایسها و نودهای عمومی در اینترنت
- دیوایسهای موجود بر روی دو شبکه محدود متفاوت که هردو به اینترنت متصل هستند
بدهد.
فارغ از کاربردهای بالا، CoAP در مکانیزمهای دیگر مانند SMS در شبکههای ارتباطی موبایل نیز استفاده میشود.
همانطور که گفته شد، CoAP پروتکلی در لایه سرویس بوده که با هدف استفاده در دیوایسهای اینترنتیِ محدود مانند نودهای موجود در *wireless sensor network توسعه داده شده است.
پروتکل CoAP به دلیل خاصیتهای ذاتیاش مانند ساپورت multicast، بار پردازشی بسیارکم و سادگیاش، براحتی به HTTP ترجمه شده و با وب integrate است. دقیقا به دلیل همین خصوصیات است که CoAP از پروتکلهای مهم در IoT و اپلیکیشنهای Machine-to-Machine(M2M) مانند smart energy و building automationاست.
ویژگیهای CoAP
-
-
REST model for small devices ·
-
دقیقا مثل HTTP، با استفاده از CoAP نیز، سرورها تحت یک URL میتوانند resource های خود مدیریت کرده و کلاینتها با استفاده از متدهایی مانند GET,PUT,POST و DELETE به این resource ها دسترسی خواهند داشت.
· Made for billions of nodes
اینترنت اشیاء (IoT) به میلیاردها نود احتیاج دارد که بسیاری از آنها به لحاظ قیمتی گران نیستند. CoAP طوری طراحی شده است تا با میکروکنترلرهایی با کمتر از ۱۰ KiB رم و ۱۰۰ KiB فضایِ کد کار کند.
· Well-designed protocol
پروتکل CoAP تحت مستند RFC 7252 توسعه داده شده است.
· Existing skills transfer
از دید یک developer، CoAP بسیار شبیه به HTTP است. با این اوصاف، میتوان گفت که بازخوانی یک value از یک سنسور تفاوت زیادی با بدست آوردن یک value از یک web API ندارد.
· Keep waste in check
پروتکل CoAP طوری طراحی شده است تا از حداقل منابع استفاده کند، چه بر روی دیوایس و چه بر روی شبکه.
در این پروتکل بجای وجود یک پشته انتقال پیچیده، از UDP بر بستر IP استفاده میشود. یک هدر ثابت ۴ بایتی و یک encoding فشرده از small messages ها که باعث حذف و یا کاهش fragmentation در لایه لینک میشود.
با استفاده از این پروتکل، بسیاری از سرورها میتوانند در یک وضعیت کامل stateless عمل کنند.
· Secure
گستردگی IoT به آن حدی که امکان exploit گسترده آن توسط هکرها باشد، نیست. پروتکل CoAP نه تنها امنیت را در سطح انتظار برآورده کرده است، بلکه بطور واقعی نیز امنیت در سطح بالایی امنیت را تامین میکند. انتخاب و وجود پیش فرض پارامترهای DTLS* در پروتکل CoAP، با کلیدهای ۳۰۷۲ بیتی RSA _که در حال حاضر نیز یکی از بهترین گزینه بر روی نودهای کوچک است_، برابری میکند.
· Ready for Integration
از آنجایی که HTTP و CoAP در مدل REST* مشترک هستند، میتوانند بسادگی به یکدیگر کانکت شوند.
· Discovery Integrated
ویژگی CoAP resource discovery این امکان را فراهم ساختع است تا CoAP خصوصیات نودهای روی شبکه را شناسایی کند.
· Discovery Integrated
درست مانند HTTP، پروتکل CoAP هم میتواند انواع مختلف پیلودها را حمل کرده و همچنین متوجه شود که کدام پیلودها مورد استفاده قرار گرفتهاند. CoAP با XML,JSON,CBOR و یا هر فرمت دیتای مورد نظر شما قابلیت یکپارچه شدن دارد.
————————————————————-
*Wireless Sensor Network(WSN) به گروهی از سنسورهای اختصاصی اطلاق میشود که وضعیت سختافزاری محیط را مانیتور و رکورد کرده و در یک محیط مرکزی آنها را ساماندهی و تحلیل میکند.
Rest Model* مخفف Representational State Transfer، یک مدل معماری نرم افزار است که مجموعه ای از کانتینرهای مورد استفاده در ایجاد سرویس های وب را تعریف میکند.
عالی بود مهندس امجدی عزیز
من هیچ اطلاعاتی نسبت به این پروتکل نداشتم !! الان از این پروتکل توی دیوایس های محدود استفاده میشه ؟ یعنی یا توجه به شباهتش به HTTP ( اگر اشتباه متوجه نشده باشم ) الان روی فایروال ها به عنوان یک پروتکل متداول در حال اضافه شدن هست ؟ توی IOT متداول استفاده مبشه ؟ و اینکه این جمله ” گستردگی IoT به آن حدی که امکان exploit گسترده آن توسط هکرها باشد، نیست ” برام خیلی گنگ هست میشه لطفا یکمی بیشتر توضیح بدین
بسیار بسیار ممنونم از وقتی که گذاشتی و واقعا برام یک مطلب خیلی جدید بود
ممنون میلاد عزیز.. بله… از این پروتکل در دیوایس های محدود (محدود به لحاظ منابع سخت افزاری مثل رم و CPU) استفاده میشه. کاربرد اصلیش در IoT هستش و به علت integrity که با http داره، به لحاظ ارتباطات شبکه ای و حتی اینترنتی نگرانی وجود نداره…
اینکه در فایروال ها بطور مجزا این پروتکل ساپورت بشه یا نه، من هنوز ندیدم ولی نمیشه ردش هم کرد و همونطور که گفتم چون با http قابلیت یکپارچه شدن داره، به نظر میرسه حتی در صورتی که روی فایروال ها هم بطور مجزا تعریف نشده باشه، مشکلی ایجاد نکنه…
و منظور از جمله “گستردگی IoT به آن حدی که امکان exploit گسترده آن توسط هکرها باشد، نیست” اینه که از اونجایی که صنعت IoT مثل دیگر بخش های شبکه هنوز به اون پختگی و گستردگی نرسیده و دامنه استفاده از اون هم عمومی نشده، به تبع، آسیب پذیری ها و شناخت ها نسبت به اون هم کمتره… بنابراین در قیاس با شبکه های کامپیوتری، درصد و احتمال اکسپلویت هم در اون کمتره.
خیلی ممنونم احسان جان ، بسیار عالی بود ، منم هنوز توی UTM های عادی که خودم باهاشون کار کردم به عنوان پروتکل جدا گونه ندیدم
این IOT هم برای خودش واقعا داستان هایی داره ! نمیدونم تکنولوژی های که توی خودرو استفاده میشه هم یجور IOT هست یا نه ولی واقعا بحث امنیت توی IOT میتونه همه جوره دنیای امروزی مارو متحول کنه ، اینکه در مورد امنیت توی بستر IOT آموزش میزاری واقعا ارزشمنده و شخصا کلی استفاده میکنم
خوب CoAP یک پروتکل جدیده و شاید در بستر اینترنت به عنوان پروتکل جدید پذیرفته شده نبشه به اون صورت (در مقایسه با http)…
به همین خاطره که با http قابلیت یکپارچه شدن داره تا به این وسیله IoT ها هم بتونن در فضای اینترنت خود نمایی کنند.
بله. تکنولوژی هایی که توی خودرو بکار برده میشه و بکار برده خواهند شد جز IoT هستند؛ مثل هیمن تکنولوژی ها در بحث کشاورزی، لوازم منزل و …
مثلا فرض کن بتونی از طریق اینترنت خودرو و یا کامپوننت هایی از اون رو بصورت any where/ any time کنترل کنی…..