- Введення в CoAP
- Порт, у якому працює CoAP
- Історія CoAP
- Ключові особливості CoAP
- Архітектура CoAP
- Як функціонує CoAP?
- Як використовувати цей протокол?
- Проблеми безпеки та їх усунення
- Книги та посилання
Введення в CoAP
CoAP (Протокол обмеженого застосування) це полегшений протокол, призначений для використання з пристроями з низьким енергоспоживанням і обмеженими мережами, такими як ті, які зустрічаються в пристроях IoT (Internet of Things). Передбачається, що він стане більш простою і ефективною альтернативою HTTP для обмежених пристроїв з обмеженою обчислювальною потужністю, пам’яттю і часом автономної роботи. CoAP побудований поверх UDP (User Datagram Protocol) і надає набір методів для виявлення ресурсів, маніпулювання ними та спостереження, а також підтримку асинхронного зв’язку та кешування. Завдяки низьким накладних витрат і простоті CoAP стає все більш популярним в додатках IoT і, як очікується, зіграє важливу роль у майбутньому Інтернету речей
Порт, у якому працює CoAP
CoAP (протокол обмеженого додатки) працює поверх UDP (протокол користувацьких дейтаграм) і звичайно використовує порт номер 5683 для незахищеної зв’язку і порт номер 5684 для захищеного зв’язку з використанням DTLS (безпека транспортного рівня дейтаграм).
Історія CoAP
CoAP, що розшифровується як Constrainted Application Protocol, являє собою полегшений протокол Інтернету речей (IoT), призначений для мереж і пристроїв з обмеженими ресурсами. Він був розроблений Цільовою групою по розробці Інтернету (IETF) у робочій групі CoRE (Restricted RESTful Environments) з метою забезпечення ефективного зв’язку між пристроями Інтернету речей по мережах з обмеженими можливостями, таким як бездротові мережі з низьким енергоспоживанням і інші середовища з обмеженими ресурсами.
Історію CoAP можна простежити з 2010 року, коли в рамках IETF була сформована Основна робоча група. Робочій групі було доручено розробити протокол, який міг би забезпечити просте, ефективне і масштабоване рішення для зв’язку між пристроями Інтернету речей в обмежених середовищах, де обмежені такі ресурси, як пропускна здатність, обчислювальна потужність і енергоспоживання.
У 2011 році перша версія CoAP, відома як CoAP version 13 (CoAP-v13), була опублікована в якості інформаційного документа RFC (Запит коментарів), RFC 7252. Ця первісна версія CoAP була заснована на архітектурі REST (Representational State Transfer), яка є поширеним архітектурним стилем, використовується у веб-додатках, і запозичила багато концепції з протоколу передачі гіпертексту (HTTP), який є стандартним протоколом, використовуваних для зв’язку через World Wide Web.
CoAP-v13 надав простий і полегшений протокол для пристроїв Інтернету речей для виконання операцій CRUD (Створення, вилучення, оновлення, видалення) над ресурсами, идентифицируемыми з допомогою уніфікованих ідентифікатор ресурсу (URI), аналогічно операціям HTTP над ресурсами, идентифицируемыми по URL. В якості транспортного протоколу він використовував протокол користувацьких дейтаграм (UDP), який являє собою протокол без встановлення з’єднання, ненадійний і легкий протокол, підходящий для обмежених середовищ. CoAP-v13 також підтримував ряд типів повідомлень, включаючи підтверджуються (CON), неподтверждаемые (NON), що підтверджують (ACK) і скидаються (RST) повідомлення, для забезпечення надійності та контролю перевантаження в ненадійних мережах.
У наступні роки CoAP продовжував розвиватися з випуском нових версій. Версія 18 CoAP (CoAP-v18), опублікована в 2014 році як RFC 7641, представила поліпшення безпеки, включаючи підтримку Datagram Transport Layer Security (DTLS) для забезпечення зв’язку між кінцевими точками CoAP. У CoAP-v18 також додані нові функції, такі як поблочная передача для ефективної обробки великих ресурсів, опція спостереження для повідомлень, ініційованих сервером, і групове спілкування для багатоадресної розсилки.
CoAP версії 21 (CoAP-v21), опублікований в 2017 році як RFC 8323, додатково удосконалив протокол, додавши додаткові опції і оптимізації. В ньому була введена концепція CoAP поверх TCP, що дозволяє передавати повідомлення CoAP по протоколу TCP для надійного зв’язку. Він також додав підтримку опції Proxy-Uri, яка дозволяє проксировать повідомлення CoAP до іншим кінцевим точкам CoAP або іншим протоколам, таких як HTTP. CoAP-v21 також включав удосконалення для виявлення ресурсів і оновлення опції Спостереження.
Таким чином, історія CoAP охоплює більше десяти років розробки, при цьому було випущено кілька версій для задоволення конкретних вимог пристроїв Інтернету речей, що працюють в обмежених середовищах. CoAP еволюціонував від своєї первісної версії як простого і легкого протоколу для обмежених мереж до більш багатофункціональному і безпечного протоколу, що забезпечує ефективний зв’язок між пристроями Інтернету речей з різних транспортних протоколів і забезпечує підтримку виявлення ресурсів, групової розсилки і інших додаткових функцій.
Ключові особливості CoAP
Ключові особливості протоколу CoAP перераховані нижче:
• Легкий і ефективний: CoAP розроблений таким чином, щоб бути простим і легким, що дозволяє йому ефективно працювати на пристроях з обмеженими ресурсами, такими як пам’ять, обчислювальна потужність і час автономної роботи. Він використовує UDP в якості базового транспортного протоколу для мінімізації накладних витрат і зменшення затримки.
• Спокійний: CoAP заснований на архітектурі RESTful, яка широко використовується у веб-додатках. Він використовує URI для ідентифікації ресурсів і надає операції CRUD (Створення, вилучення, оновлення, видалення) для взаємодії з цими ресурсами.
• Заснований на повідомлення: CoAP використовує комунікаційну модель, засновану на повідомленнях, де кожне повідомлення являє собою автономний блок, який містить всю необхідну інформацію для її обробки одержувачем. Це робить його підходящим для ненадійних мереж, де повідомлення можуть бути втрачені або затримані.
• Вбудована надійність: CoAP забезпечує надійність завдяки підтвердженням повідомлень, повторним передачам і контролю перевантаження. Він використовує простий та ефективний механізм забезпечення надійності, який дає змогу уникнути зайвих накладних витрат.
• Безпека: CoAP підтримує безпеку транспортного рівня дейтаграм (DTLS) для забезпечення безпечної зв’язку за протоколом UDP. Він також підтримує полегшені механізми безпеки, такі як попередній спільний ключ (PSK) і Необроблений відкритий ключ (RPK) для аутентифікації кінцевих точок і безпечного зв’язку.
• Виявлення ресурсів: CoAP надає простий і ефективний механізм для виявлення ресурсів в мережі. Він використовує формат базової посилання для опису ресурсів і їх властивостей.
• Спостерігають ресурси: CoAP дозволяє клієнтам спостерігати за ресурсами в мережі і отримувати повідомлення при зміні ресурсів. Це корисно для додатків реального часу, яким необхідно відстежувати зміни у середовищі та реагувати на них.
• Підтримка багатоадресної розсилки: CoAP підтримує многоадресную і групову зв’язок, що дозволяє декільком пристроям отримувати одне і те ж повідомлення при одній передачі. Це скорочує мережевий трафік і економить ресурси.
CoAP надає легкий і ефективний протокол для пристроїв і мереж з обмеженими ресурсами, підтримуючи при цьому такі важливі функції, як надійність, безпека, виявлення ресурсів і спостереження.
Архітектура CoAP
Архітектура CoAP складається з чотирьох основних компонентів:
Клієнти CoAP: Клієнт CoAP – це будь-який пристрій, яке ініціює запит до сервера CoAP для вилучення, створення, оновлення або видалення ресурсу. Він також може спостерігати за ресурсом, щоб отримувати попередження при зміні ресурсу.
Сервери CoAP: Сервер CoAP – це пристрій, який надає ресурси для доступу клієнтів CoAP. Сервер обробляє вхідні запити та відправляє відповідь назад клієнтові. Він також може відправляти повідомлення клієнтам, які спостерігають за ресурсом.
Проксі – сервери CoAP: Проксі-сервер CoAP – це проміжне пристрій, який знаходиться між клієнтом CoAP і сервером CoAP. Він може використовуватися для фільтрації або зміни запитів і відповідей, а також для кешування відповідей для зменшення мережевого трафіку.
Ресурс CoAP: Ресурс CoAP – це будь-яка частина даних або функціональних можливостей, до яких можна отримати доступ через CoAP. Він ідентифікується з допомогою URI і може мати одне або кілька зображень в різних форматах, таких як XML, JSON або CBOR. Ресурси можуть бути статичними, такими як свідчення датчика, чи динамічними, такими як функція управління.
Архітектура CoAP також включає в себе кілька інших ключових концепцій:
Повідомлення: CoAP використовує модель зв’язку на основі повідомлень, де кожен запит і відповідь інкапсулюються в повідомленні CoAP. Повідомлення CoAP невеликі і легкі, їх максимальний розмір становить 1024 байта.
Опції: Повідомлення CoAP можуть включати параметри, які надають додаткову інформацію про запиті або відповіді. Приклади опцій включають формат вмісту, спостереження, ETag і Максимальний вік.
Спостерігають ресурси: Клієнти CoAP можуть спостерігати за ресурсами, відправивши спеціальний запит на спостереження. Потім сервер буде відправляти повідомлення клієнту всякий раз, коли ресурс змінюється.
Переклади з блоків: CoAP підтримує передачу даних по блоках, коли великі ресурси можуть бути розділені на більш дрібні блоки і передані в послідовності запитів і відповідей. Це дозволяє пристроям з обмеженою пам’яттю і пропускною здатністю отримувати доступ до великих ресурсів.
Архітектура CoAP – це легка і ефективна архітектура клієнт-сервер, розроблена для пристроїв і мереж з обмеженими ресурсами. Він використовує UDP в якості базового транспортного протоколу і включає в себе такі компоненти, як клієнти, сервери, проксі-сервери і ресурси. Повідомлення CoAP невеликі та легкі і можуть містити опції для отримання додаткової інформації. CoAP також підтримує спостереження за ресурсами і поблочную передачу.
Як функціонує CoAP?
CoAP (протокол обмеженого додатки) функціонує з допомогою простої і ефективної моделі клієнт-серверний запит-відповідь. Протокол розроблений спеціально для пристроїв і мереж з обмеженими ресурсами і використовує протокол користувацьких дейтаграм (UDP) в якості базового транспортного протоколу.
Ось як функціонує CoAP:
Клієнт надсилає запит: Клієнт CoAP відправляє запит на сервер CoAP для доступу до ресурсу. Запит включає в себе метод (GET, POST, PUT, DELETE), URI, що ідентифікує ресурс, і будь-які додаткові параметри.
Сервер обробляє запит: Сервер CoAP отримує запит і обробляє його. Якщо запит дійсний, сервер генерує відповідь і відправляє його назад клієнтові. Якщо запит недійсний, сервер відправляє відповідь з помилкою.
Сервер відправляє відповідь: Сервер відправляє відповідь назад клієнтові. Відповідь містить код стану (наприклад, вміст 2.05, 4.04 Не знайдено), корисне навантаження (якщо застосовно) та будь-які додаткові параметри.
Клієнт одержує відповідь: Клієнт одержує відповідь від сервера і обробляє його. Якщо відповідь містить корисну навантаження, клієнт може використовувати ці дані для виконання бажаної операції.
На додаток до базової моделі запит-відповідь, CoAP також включає в себе деякі додаткові функції:
Спостерігають ресурси: Клієнт CoAP може спостерігати за ресурсом, відправивши запит спостереження на сервер. Потім сервер буде відправляти повідомлення клієнту всякий раз, коли ресурс змінюється.
Переклади з блоків: CoAP підтримує передачу даних по блоках, коли великі ресурси можуть бути розділені на більш дрібні блоки і передані в послідовності запитів і відповідей. Це дозволяє пристроям з обмеженою пам’яттю і пропускною здатністю отримувати доступ до великих ресурсів.
Безпека: CoAP підтримує безпеку транспортного рівня дейтаграм (DTLS) для забезпечення безпечної зв’язку за протоколом UDP. Він також підтримує полегшені механізми безпеки, такі як попередній спільний ключ (PSK) і Необроблений відкритий ключ (RPK) для аутентифікації кінцевих точок і безпечного зв’язку.
Виявлення ресурсів: CoAP надає простий і ефективний механізм для виявлення ресурсів в мережі. Він використовує формат базової посилання для опису ресурсів і їх властивостей.
CoAP функціонує з допомогою простої і ефективної моделі запит-відповідь з додатковими функціями, такими як спостереження за ресурсами, поблочная передача, безпека і виявлення ресурсів. Він розроблений спеціально для пристроїв і мереж з обмеженими ресурсами і призначений для ефективної роботи на пристроях з обмеженими ресурсами, такими як пам’ять, обчислювальна потужність і час автономної роботи.
Як використовувати цей протокол?
Щоб використовувати CoAP (протокол обмеженого додатки), вам необхідно виконати наступні дії:
Виберіть бібліотеку CoAP або фреймворк: CoAP – це протокол, і як такий, що для його реалізації потрібно бібліотека або фреймворк. Існує безліч бібліотек та фреймворків CoAP, доступних для різних мов програмування, таких як C, Java, Python і JavaScript. Деякі популярні опції включають libcoap, Californium, CoAPthon та node-coap.
Впровадити клієнт або сервер CoAP: Після того як ви вибрали бібліотеку або фреймворк CoAP, ви можете реалізувати клієнт або сервер CoAP, використовуючи цю бібліотеку. Клієнт CoAP відправляє запити на сервер CoAP для доступу до ресурсів, у той час як сервер CoAP надає ресурси для доступу клієнтів CoAP.
Визначення ресурсів: На сервері CoAP вам необхідно визначити ресурси, які ви хочете надати клієнтам CoAP. Ресурс – це будь-яка частина даних або функціональних можливостей, до яких можна отримати доступ через CoAP. Ресурси ідентифікуються за допомогою URI, і вони можуть мати одне або декілька зображень в різних форматах, таких як XML, JSON або CBOR.
Надсилати запити: У CoAP-клієнті ви можете надсилати запити на CoAP-сервер для доступу до ресурсів. Щоб надіслати запит, вам необхідно вказати метод (GET, POST, PUT або DELETE), URI ресурсу і будь-які додаткові параметри.
Отримувати відповіді: Коли ви відправляєте запит, ви отримаєте відповіді від сервера CoAP. Відповідь буде включати код стану (наприклад, вміст 2.05, 4.04 Не знайдено), корисне навантаження (якщо застосовно) та будь-які додаткові параметри.
Реалізувати додаткові функції: CoAP також підтримує додаткові функції, такі як спостереження за ресурсами, поблочная передача, безпека і виявлення ресурсів. Ви можете реалізувати ці функції по мірі необхідності, використовуючи свою бібліотеку CoAP або фреймворк.
Використання CoAP включає в себе вибір бібліотеки або фреймворку CoAP, реалізацію клієнта або сервера CoAP, визначення ресурсів, відправку запитів, отримання відповідей і реалізацію додаткових функцій по мірі необхідності. CoAP – це легкий і ефективний протокол, розроблений для пристроїв і мереж з обмеженими ресурсами, і він призначений для ефективної роботи на пристроях з обмеженими ресурсами, такими як пам’ять, обчислювальна потужність і час автономної роботи.
Проблеми безпеки та їх усунення
CoAP (Constrainted Application Protocol) розроблений як легкий і ефективний протокол для пристроїв і мереж з обмеженими ресурсами. Однак його легкий характер означає, що він може бути вразливий до певних проблем безпеки. Ось деякі з проблем безпеки в CoAP і деякі методи виправлення:
Відсутність аутентифікації: CoAP не надає вбудованих механізмів автентифікації, що означає, що будь-хто може надсилати запити на сервер CoAP. Щоб вирішити цю проблему, ви можете використовувати безпеку транспортного рівня дейтаграм (DTLS) для забезпечення безпечної зв’язку за протоколом UDP. DTLS надає служби аутентифікації і шифрування для захисту зв’язку між клієнтом CoAP і сервером.
Атаки типу “відмова в обслуговуванні”: CoAP уразливим для атак типу “Відмова в обслуговуванні” (DoS), коли зловмисник завалює сервер запитами, в результаті чого він стає перевантаженим і перестає відповідати. Щоб запобігти DoS-атаки, ви можете реалізувати механізми обмеження швидкості та контролю доступу на сервері CoAP. Ці механізми обмежують кількість запитів, які можуть бути відправлені на сервер, і запобігають несанкціонованому доступу.
Відсутність авторизації: CoAP не надає вбудованих механізмів авторизації, що означає, що будь-хто може надсилати запити на сервер, може отримати доступ до його ресурсів. Щоб вирішити цю проблему, ви можете реалізувати механізми контролю доступу на сервері. Ці механізми обмежують доступ до певних ресурсів в залежності від особистості клієнта і типу надісланого запиту.
Підробка повідомлень: Повідомлення CoAP можуть бути перехоплені і змінені зловмисником, що може призвести до несанкціонованого доступу до ресурсів або даними. Щоб запобігти підробці повідомлень, ви можете використовувати механізми забезпечення цілісності повідомлень, такі як код автентифікації повідомлення (MAC) або цифрові підписи. Ці механізми гарантують, що повідомлення не було змінено під час передачі.
Атаки на виявлення ресурсів: CoAP надає простий і ефективний механізм виявлення ресурсів у мережі, який може бути використаний зловмисниками для отримання несанкціонованого доступу до ресурсів. Щоб запобігти атаки на виявлення ресурсів, ви можете використовувати механізми контролю доступу на сервері CoAP для обмеження доступу до певних ресурсів.
CoAP може бути вразливий до таких проблем, як відсутність аутентифікації та авторизації, DoS-атаки, підробка повідомлень і атаки на виявлення ресурсів. Щоб вирішити ці проблеми, ви можете використовувати DTLS для безпечного зв’язку, реалізувати механізми контролю доступу на сервері, використовувати механізми забезпечення цілісності повідомлень і обмежити доступ до певних ресурсів.
Книги та посилання
Ось кілька рекомендованих книг по CoAP (Протокол обмеженого застосування):
“Початок роботи з Інтернетом речей: Підключення датчиків і мікроконтролерів до хмари” Куно Пфістера: Ця книга являє собою введення в IoT (Інтернет речей) і охоплює різні протоколи IoT, включаючи CoAP. У ньому міститься практичне керівництво по створенню систем Інтернету речей з використанням CoAP і інших протоколів.
“Керівництво по створенню мережі речей” Маттіаса Ковача: У цій книзі представлено всебічний огляд CoAP і його додатків у Мережі речей. У ньому розповідається про архітектуру, функції та принципи проектування CoAP, а також про його використання в різних додатках Інтернету Речей.
Ці книги являють собою всеосяжне керівництво по CoAP і його додатків у IoT і Web of Things. Вони охоплюють принципи CoAP, його архітектуру і його використання в різних додатках Інтернету речей, а також практичні приклади і покрокові керівництва по створенню систем на основі CoAP.
П.С. Поцуплено з https://cqr.company/ua/wiki/protocols/constrained-application-protocol-coap/
Схема NodeMCU с USB-UART мостом на основе CH340 Схема NodeMCU с USB-UART мостом на основе CP2102 Схема ESP32
Виникло питання підтримки різних сертифікатів для різних доменів. І як виявилось – це можливо. Отож далі приклати конфігурації: Postfix Після запускаємо $ postmap -F hash:/etc/postfix/vmail_ssl.map . . .