Constrained Application Protocol (CoAP) ist ein von der Internet Engineering Task Force ( IETF) entwickeltes Web-Transfer-Protocol für das Internet of Things ( IoT) oder für die M2M-Kommunikation. Es basiert auf Representational State Transfer ( REST), dem Architekturmodell für Webservices, bei dem Ressourcen von Servern durch einen Anwendungsprozess kontrolliert und über die Uniform Resource Identifiers ( URI) identifiziert werden.
Das CoAP- Protokoll ist ein rein binäres Protokoll und nicht im ASCII-Zeichensatz darstellbar. Es wurde für einfache Anwendungen konzipiert und ist über zwei Schichten organisiert: Dem Transport Layer und dem Transaction Layer. Ein wesentlicher Unterschied zwischen HTTP und CoAP liegt in der Transportschicht, auf der beide Protokolle aufsetzen. Während das HTTP-Protokoll das Transmission Control Protocol ( TCP) benutzt, das für Low Power and Lossy Networks ( LLN) relativ ungeeignet ist weil der Overhead für deterministische Transaktionen zu groß ist, arbeitet das CoAP-Protokoll mit dem User Datagram Protocol ( UDP), das einen wesentlich kleineren Overhead hat.
Über den Transaction Layer wird der Nachrichtenaustausch zwischen den Endpunkten durchgeführt. Dabei wird zwischen vier Nachrichtentypen unterschieden: Confirmables, das sind zu bestätigende Nachrichten, Non-Confirmables, das sind nicht zu bestätigende Nachrichten, Acknowledgement, das ist die Bestätigung einer zu bestätigenden Nachricht, und Reset zeigt an, dass eine Confirmable-Nachricht empfangen wurde aber nicht weiter verarbeitet werden kann.
Das CoAP-Protokoll wird u.a. auch als Anwendungsprotokoll in Lightweight M2M ( LWM2M), in Lemonbeat und in IoTivity eingesetzt.