CoAP – Constrained Application Protocol
CoAP (ang. Constrained Application Protocol) jest protokołem aplikacyjnym opracowanym specjalnie dla urządzeń o ograniczonych zasobach, takich jak czujniki, aktuatory i inne elementy Internetu Rzeczy (IoT). Został zdefiniowany w RFC 7252 i bazuje na protokole transportowym UDP, co umożliwia niewielkie opóźnienia oraz niskie zużycie pamięci i energii.
Historia
Prace nad CoAP rozpoczęły się w 2010 roku w ramach grupy roboczej IETF pod nazwą „Constrained RESTful Environments”. Pierwsza wersja specyfikacji została opublikowana w 2014 roku jako RFC 7252. Od tego czasu protokół był wielokrotnie rozszerzany (np. w RFC 7959 – blokowanie transmisji) i stał się podstawą komunikacji w wielu standardach przemysłowych.
Podstawowe założenia
- Mały narzut – nagłówki CoAP mają stałą, bardzo małą wielkość (4 B), co pozwala na przesyłanie danych w pakietach o rozmiarze nawet IPv6 1280 B.
- Model RESTful – operacje są odwzorowane na klasyczne metody HTTP:
GET,POST,PUT,DELETEoraz dodatkowoOBSERVEumożliwiający subskrypcję zasobów. - Praca w sieciach bezpołączeniowych – CoAP obsługuje retransmisje, potwierdzenia i mechanizmy wykrywania duplikatów, co jest niezbędne przy użyciu UDP.
- Bezpieczeństwo – protokół może być zabezpieczony przy użyciu DTLS (Datagram Transport Layer Security) oraz opcji OSCOAP (Object Security for Constrained RESTful Environments).
Architektura
CoAP składa się z trzech warstw:
- Warstwa aplikacji – definiuje zasoby, ich reprezentacje oraz metody operacyjne.
- Warstwa transportowa – oparta na UDP, zapewnia mechanizmy potwierdzania (
CON) i niepotwierdzania (NON) wiadomości. - Warstwa sieciowa – najczęściej wykorzystuje IPv6 lub 6LoWPAN w środowiskach o bardzo małym zasięgu.
Mechanizm działania
Komunikacja w CoAP opiera się na wymianie wiadomości typu request i response. Każda wiadomość posiada identyfikator wiadomości (Message ID), kod (np. 0.01 GET), token oraz opcjonalne opcje (Options) i ładunek (Payload).
Podstawowy schemat wymiany:
Client (GET /sensors/temp) ──► Server Server (2.05 Content) ◄─── Client
W trybie OBSERVE klient może subskrybować zmiany zasobu, a serwer powiadamia go o aktualizacjach bez konieczności kolejnych żądań.
Zastosowania
- Systemy monitoringu środowiskowego – np. pomiar temperatury, wilgotności w smart city.
- Automatyka budynkowa – sterowanie oświetleniem, HVAC w automatyce budynkowej.
- Przemysł 4.0 – integracja czujników w IIoT oraz protokoły OPC UA poprzez bramki CoAP.
- Rolnictwo precyzyjne – zdalne monitorowanie parametrów gleby i klimatu.
Bezpieczeństwo
W standardowym użyciu CoAP nie zapewnia szyfrowania ani uwierzytelniania. Do zabezpieczenia transmisji stosuje się:
- DTLS – zapewnia poufność, integralność i uwierzytelnianie na poziomie transportu.
- OSCOAP – zabezpiecza poszczególne wiadomości przy pomocy kryptografii symetrycznej, co jest wydajne w środowiskach o ograniczonych zasobach.
- Mechanizmy kontroli dostępu oparte na OAuth 2.0 i tokenach CBOR Web Token (CWT).
Rozwój i przyszłość
Od momentu publikacji CoAP stał się podstawą wielu standardów, m.in. oneM2M, LWM2M (Lightweight M2M) oraz smart meters. W najnowszych pracach nad protokołem koncentruje się na:
- Usprawnieniach w obsłudze multicast (RFC 7962).
- Rozszerzeniach bezpieczeństwa, szczególnie w kontekście kryptografii post-kwantowej.
- Integracji z edge computing i platformami chmurowymi.
Bibliografia
- R. Fielding, Architectural Styles and the Design of Network-based Software Architectures, PhD thesis, 2000.
- G. Bormann, A. Solis, RFC 7252 – Constrained Application Protocol (CoAP), IETF, 2014.
- J. Aceto, et al., RFC 7959 – Blockwise Transfers in CoAP, IETF, 2016.
- H. Hu et al., „CoAP over DTLS for secure IoT communication”, IEEE Internet of Things Journal, 2020.
- W. K. L. Kicking et al., „OSCOAP – Object Security for Constrained RESTful Environments”, RFC 8613, 2019.
CoAP jest kluczowym elementem współczesnych systemów IoT, łącząc prostotę protokołu HTTP z minimalnym narzutem wymaganym w środowiskach o ograniczonych zasobach.