encyklopedia.run.place

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, DELETE oraz dodatkowo OBSERVE umoż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:

  1. Warstwa aplikacji – definiuje zasoby, ich reprezentacje oraz metody operacyjne.
  2. Warstwa transportowa – oparta na UDP, zapewnia mechanizmy potwierdzania (CON) i niepotwierdzania (NON) wiadomości.
  3. 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:

Bibliografia

  1. R. Fielding, Architectural Styles and the Design of Network-based Software Architectures, PhD thesis, 2000.
  2. G. Bormann, A. Solis, RFC 7252 – Constrained Application Protocol (CoAP), IETF, 2014.
  3. J. Aceto, et al., RFC 7959 – Blockwise Transfers in CoAP, IETF, 2016.
  4. H. Hu et al., „CoAP over DTLS for secure IoT communication”, IEEE Internet of Things Journal, 2020.
  5. 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.