Wat is CoAP?
CoAP (Constrained Application Protocol) is een door de IETF gestandaardiseerd applicatieprotocol (RFC 7252, 2014) waarmee apparaten met weinig rekenkracht, geheugen en energie volgens het REST-model van het web data uitwisselen, met een vaste header van slechts 4 bytes over UDP. Het protocol is ontworpen voor embedded sensoren, actuatoren en gateways binnen het IoT, het Industrial Internet of Things en OT-omgevingen. Waar HTTP te zwaar is voor een batterijgevoede microcontroller, biedt CoAP dezelfde begrippen (URI’s, GET/PUT/POST/DELETE, statuscodes) in een compacte binaire vorm. Binnen Industriële Automatisering en IT OT Convergentie verschijnt CoAP vooral in draadloze sensornetwerken, gebouwbeheer, slimme meters en apparaatbeheer op afstand.
🧠 Waar komt CoAP vandaan en waarvoor is het bedoeld?
CoAP is ontwikkeld door de IETF-werkgroep CoRE (Constrained RESTful Environments). De kernspecificatie RFC 7252 verscheen in juni 2014, geschreven door Zach Shelby, Klaus Hartke en Carsten Bormann. Het doel was een webprotocol met dezelfde architectuur als het web, maar voor netwerken met lage bandbreedte, veel pakketverlies en apparaten die het grootste deel van de tijd slapen.
RFC 7228 deelt zulke constrained devices in drie klassen in. Die indeling helpt bij de keuze tussen CoAP, MQTT of een zwaarder protocol:
| Klasse | RAM (orde van grootte) | Flash (orde van grootte) | Typisch protocolgebruik |
|---|---|---|---|
| Class 0 | veel minder dan 10 KiB | veel minder dan 100 KiB | Te klein om zelf veilig met internet te communiceren; praat via een gateway of proxy |
| Class 1 | circa 10 KiB | circa 100 KiB | CoAP over UDP, eventueel met DTLS of OSCORE |
| Class 2 | circa 50 KiB | circa 250 KiB | Volledige CoAP-stack, ook TCP-protocollen haalbaar |
Rond de kern zijn later extensies gestandaardiseerd: Observe (RFC 7641, 2015), block-wise transfer (RFC 7959, 2016), CoAP over TCP, TLS en WebSockets (RFC 8323, 2018), de methodes FETCH, PATCH en iPATCH (RFC 8132, 2017) en de beveiliging OSCORE (RFC 8613, 2019).
🔧 Hoe werkt CoAP technisch?
CoAP volgt een client/server-model. Een apparaat is meestal server: het biedt resources
aan zoals coap://sensor01/temperatuur. Een gateway, SCADA-koppeling of beheerplatform is de client die deze resources opvraagt.
Standaard luistert CoAP op UDP-poort 5683 (coap://) en met DTLS op poort
5684 (coaps://).
Elk bericht begint met een vaste header van 4 bytes: versie, berichttype, tokenlengte, een code (methode of statuscode) en een Message ID van 16 bits. Daarna volgen een token van 0 tot 8 bytes, compact gecodeerde opties (zoals Uri-Path en Content-Format) en de payload. Die payload is vaak CBOR, JSON of SenML.
Omdat UDP geen aflevering garandeert, regelt CoAP betrouwbaarheid zelf met vier berichttypes:
| Type | Betekenis | Wanneer gebruiken? |
|---|---|---|
| Confirmable (CON) | Ontvanger moet bevestigen; anders volgt herverzending | Commando’s en belangrijke waarden |
| Non-confirmable (NON) | Geen bevestiging | Frequente metingen waarbij één gemiste waarde geen probleem is |
| Acknowledgement (ACK) | Bevestigt een CON-bericht, vaak met het antwoord erin | Antwoord van de server |
| Reset (RST) | Bericht ontvangen, maar de context ontbreekt om het te verwerken | Bijvoorbeeld na een herstart van het apparaat |
De methodes lijken op HTTP: GET leest een resource, PUT wijzigt of maakt
hem, POST laat de server een verzoek verwerken en DELETE verwijdert.
Antwoorden dragen codes als 2.05 Content of 4.04 Not Found, de tegenhangers van
HTTP 200 en 404. Daardoor kan een HTTP-CoAP-proxy beide werelden eenvoudig vertalen.
📡 Welke functies maken CoAP geschikt voor OT en IoT?
- Observe - een client registreert zich op een resource en krijgt automatisch een melding bij elke wijziging. Dat is het observer-patroon tussen client en server, zonder broker, en vermindert polling, netwerkbelasting en latency.
-
Discovery - via
/.well-known/core(CoRE Link Format, RFC 6690) somt een apparaat zijn resources op. Een Resource Directory (RFC 9176) verzamelt die beschrijvingen centraal, wat schaalbaarheid naar duizenden apparaten mogelijk maakt. - Multicast - één verzoek over UDP-multicast bereikt een hele groep apparaten, bijvoorbeeld om alle lampen in een zone te schakelen.
- Block-wise transfer - grote payloads, zoals firmware-images, gaan in blokken van 16 tot 1024 bytes over het netwerk.
- Proxy en caching - antwoorden bevatten een geldigheidsduur, zodat een gateway waarden kan bufferen voor slapende apparaten.
CoAP draait over IPv6 en over 6LoWPAN op IEEE 802.15.4-radio’s, maar ook over Wifi, Bluetooth-netwerken en mobiele verbindingen zoals NB-IoT. Het bekendste protocol dat erop voortbouwt is LwM2M van OMA SpecWorks: het apparaatbeheerprotocol voor firmware-updates, configuratie en diagnose dat veel in M2M-toepassingen over NB-IoT wordt gebruikt.
🔄 Wat is het verschil tussen CoAP en MQTT?
CoAP en MQTT worden vaak naast elkaar genoemd, maar volgen een ander model:
| Eigenschap | CoAP | MQTT |
|---|---|---|
| Model | Request/response (REST) plus Observe | Publish/subscribe via een broker |
| Standaard | IETF RFC 7252 (2014) | OASIS; versie 3.1.1 ook ISO/IEC 20922 |
| Transport | UDP; ook TCP, TLS en WebSockets (RFC 8323) | TCP; variant MQTT-SN voor UDP en sensornetwerken |
| Vaste header | 4 bytes | Minimaal 2 bytes |
| Beveiliging | DTLS of OSCORE | TLS |
| Discovery | Ingebouwd via /.well-known/core |
Niet in het protocol; topics worden afgesproken |
| Multicast | Ja | Nee |
| Centrale component | Niet nodig | Broker vereist |
Kort gezegd: CoAP past bij directe interactie met individuele, vaak slapende apparaten. MQTT past bij datadistributie naar veel afnemers, zoals in een Unified Namespace. In de praktijk zet een gateway CoAP-data vaak om naar MQTT, AMQP of OPC UA.
🏭 Waar wordt CoAP in de praktijk gebruikt?
| Toepassing | Voorbeeld | Waarom CoAP? |
|---|---|---|
| Gebouwautomatisering | HVAC-sensoren, verlichting, aanwezigheidsdetectie | Batterijvoeding, mesh-netwerken, multicast |
| Energie en utilities | Slimme meters, telemetrie | Apparaatbeheer via LwM2M over NB-IoT |
| Watersector | Niveaumeting, pompbewaking op afstand | Weinig data, lange batterijduur |
| Productie | Draadloze trillings- en temperatuursensoren voor Condition Monitoring | Goedkope sensoren die data leveren voor Predictive Maintenance |
| Edge Computing | Gateway die CoAP-sensoren uitleest en doorstuurt | Vertaling naar Historian, SCADA of cloud |
De grote cloudplatforms accepteren CoAP niet rechtstreeks: AWS IoT Core werkt met MQTT en HTTPS, Azure IoT Hub met MQTT, AMQP en HTTPS, en Google Cloud IoT Core is op 16 augustus 2023 gestopt. CoAP-apparaten bereiken de cloud daarom via een edge-gateway of een LwM2M-server.
🔐 Hoe beveiligt u CoAP?
RFC 7252 kent vier beveiligingsmodi: NoSec (geen beveiliging op protocolniveau), PreSharedKey, RawPublicKey en Certificate, de laatste drie via
DTLS. Verplicht te implementeren cipher suites zijn TLS_PSK_WITH_AES_128_CCM_8 en TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8. DTLS 1.3 (RFC 9147, 2022) verkort de handshake. OSCORE beveiligt de CoAP-berichten zelf, zodat versleuteling en authenticatie ook over proxies en gateways heen end-to-end blijven.
Vanuit cybersecurity-oogpunt is het grootste risico een UDP-dienst zonder authenticatie die vanaf internet
bereikbaar is. Sinds december 2018 misbruiken aanvallers open CoAP-apparaten voor reflectie- en
amplificatie-DDoS: een GET-verzoek van circa 21
bytes op /.well-known/core levert gemiddeld een antwoord van zo’n 720 bytes op, een
versterking van ongeveer 34 keer. In 2019 waren wereldwijd honderdduizenden misbruikbare apparaten
zichtbaar. Andere dreigingen zijn gespoofde afzenders, een replay-aanval op onbeveiligde commando’s en uitputting van geheugen en batterij.
🛠️ Hoe zet u CoAP veilig in binnen een OT-omgeving?
Een praktische aanpak voor hardening in vijf stappen:
- Inventariseer - neem alle CoAP-apparaten en gateways op in de asset-inventaris, inclusief firmwareversie en beveiligingsmodus.
- Kies een beveiligingsmodus - NoSec alleen binnen een volledig afgeschermd segment; anders DTLS met certificaten of OSCORE, met goed certificaatbeheer en identiteitsbeheer voor apparaten.
- Segmenteer - plaats sensornetwerken in een eigen zone volgens IEC 62443 en netwerksegmentatie; blokkeer UDP 5683 en 5684 aan de internetrand met een industriële firewall.
- Begrens - stel rate limiting in op gateways en servers, zoals RFC 7252 aanbeveelt, en zet multicast alleen aan waar het nodig is.
- Bewaak - neem CoAP-verkeer op in security monitoring; Wireshark ontleedt CoAP en DTLS standaard.
Typische standaardwaarden uit RFC 7252 helpen bij het afstellen van time-outs en firewallregels:
| Parameter | Standaardwaarde | Betekenis |
|---|---|---|
| ACK_TIMEOUT | 2 s (willekeurig 2-3 s) | Eerste wachttijd op een ACK |
| MAX_RETRANSMIT | 4 | Maximaal aantal herverzendingen, met verdubbelende wachttijd |
| MAX_TRANSMIT_SPAN | 45 s | Langste tijd tussen eerste en laatste verzending |
| EXCHANGE_LIFETIME | 247 s | Hoe lang een Message ID als bezet geldt |
| NSTART | 1 | Gelijktijdige openstaande verzoeken per server |
In Nederland en de EU wordt dit ook een wettelijke kwestie. De Cyber Resilience Act eist dat producten met digitale elementen, ook CoAP-sensoren en gateways, veilig zijn bij levering. Fabrikanten moeten actief misbruikte kwetsbaarheden melden vanaf 11 september 2026; de volledige eisen gelden vanaf 11 december 2027. Organisaties onder de Cyberbeveiligingswet (in werking sinds 15 augustus 2026) moeten zulke apparaten meenemen in hun risicobeheer, bijvoorbeeld met NIST SP 800-82 of het NIST CSF als kader, en de regels vastleggen in hun beveiligingsbeleid.
❓ Veelgestelde vragen
Is CoAP hetzelfde als HTTP?
CoAP is geen HTTP, maar gebruikt wel hetzelfde REST-model met URI’s, methodes en statuscodes. CoAP is binair, draait standaard over UDP en heeft een vaste header van 4 bytes, waardoor het geschikt is voor microcontrollers. Een HTTP-CoAP-proxy kan verzoeken tussen beide protocollen vertalen.
Welke poort gebruikt CoAP?
CoAP gebruikt standaard UDP-poort 5683 voor onbeveiligd verkeer (coap://) en UDP-poort 5684
voor verkeer met DTLS (coaps://). Bij CoAP over TCP of TLS (RFC 8323) gelden dezelfde
poortnummers op TCP. Beide poorten horen in OT-omgevingen niet open te staan naar internet.
Wanneer kiest u CoAP in plaats van MQTT?
CoAP is de logische keuze voor kleine, vaak batterijgevoede apparaten die u direct wilt aanspreken, zonder broker en met ingebouwde discovery en multicast. MQTT past beter wanneer veel systemen dezelfde data moeten ontvangen via publish/subscribe. Veel architecturen combineren beide, met een gateway die CoAP omzet naar MQTT.
Is CoAP veilig genoeg voor industriële toepassingen?
CoAP is veilig in te zetten met DTLS of OSCORE, sterke apparaatidentiteiten en netwerksegmentatie. De NoSec-modus biedt geen enkele bescherming en open CoAP-apparaten worden sinds 2018 misbruikt voor DDoS-amplificatie. Behandel de security van CoAP-apparaten daarom net zo serieus als die van andere OT-assets in uw IEC 62443-zones.
Wat is het verschil tussen CoAP en LwM2M?
CoAP is het transportprotocol voor resources; LwM2M van OMA SpecWorks is een apparaatbeheerprotocol dat daarbovenop draait. LwM2M definieert standaardobjecten voor onder meer firmware-updates, configuratie en diagnose. Veel NB-IoT-modules en draadloze sensoren gebruiken LwM2M over CoAP voor beheer op afstand.
Ondersteunen cloudplatforms CoAP rechtstreeks?
AWS IoT Core en Azure IoT Hub ondersteunen CoAP niet rechtstreeks; zij werken met MQTT, AMQP en HTTPS. CoAP-apparaten bereiken de cloud daarom meestal via een edge-gateway of een LwM2M-server die de data omzet. Google Cloud IoT Core bestaat sinds 16 augustus 2023 niet meer.
📌 Samengevat
CoAP brengt het REST-model van het web naar apparaten met minimale middelen: een header van 4 bytes over UDP, eigen betrouwbaarheid met CON- en NON-berichten, en extensies voor Observe, discovery, multicast en block-wise transfer. In OT verschijnt het in draadloze sensornetwerken, gebouwbeheer, energie en water, meestal achter een gateway die naar MQTT, OPC UA of SCADA vertaalt. De zwakke plek is beveiliging: zonder DTLS of OSCORE en zonder segmentatie is een CoAP-apparaat een open UDP-dienst die aanvallers voor DDoS misbruiken.
CoAP is het lichte webprotocol voor de kleinste OT- en IoT-apparaten; zet het alleen in met DTLS of OSCORE, in een afgeschermde zone en achter een gateway.
