Constrained Application Protocol
Das Constrained Application Protocol (CoAP) ist ein von der Internet Engineering Task Force (IETF) entwickeltes Web-Transfer-Protokoll für das Internet of Things (IoT). Es ist ein speziell für eingebettete Geräte weiterentwickeltes Protokoll, welches die Grundzüge von REST übernimmt. Das Protokoll ist im RFC 7252 spezifiziert.
CoAP ein netzwerkorientiertes Protokoll, dass dem HTTP-Protokoll sehr ähnelt. Es nutzt dabei Features von HTTP erlaubt aber einen geringeren Overhead und auch einen Multicast. Das HTTP Protokoll ermöglicht die notwendige Interoperabilität für IoT-Geräte. HTTP nutzt TCP für Point-to-Point Verbindungen, ist aber für abgegrenzte Netzwerke zu komplex. CoAP hingegen benützt primär UDP ohne komplexe Staukontrolle. Die Kombination von REST-Methoden und UDP ermöglichen es CoAP die Begrenzungen von HTTP zu erweitern und so die Kommunikation für IoT-Geräte zu erleichtern und sicherzustellen.
Bei der Einführung von CoAP wurde davon ausgegangen, dass UDP [RFC768] und das Datagram Transport Layer Security Protokoll (DTLS) [RFC6347] über UDP uneingeschränkt genutzt werden kann. Da UDP aber bei vielen Zugangsnetzten vollkommen blockiert und auch der UDP-Verkehr in einigen Netzwerken begrenzt wird, wurde CoAP über TCP [RFC793] und TLS [RFC5246] eingeführt. Hierbei kommen die besonderen Eigenschaften von CoAP über TCP bei einem NAT-Traversal zu tragen, da die Berechnung der Verfallszeiten basierend auf dem Transportschichtprotokoll berechnet werden, welche von den Anwendungsprotokollen verwendet werden. Der Mittelwert von TCP-NAT-Bindungszeitüberschreitungen liegt bei 386 Minuten, wohingegen der Mittelwert bei UDP bei 160 Sekunden liegt. Kürzere Bindungszeitüberschreitungen fordern mehr Keepalive-Nachrichten und erhöhen somit den Traffic. Weiters nutzt TCP auch noch zusätzliche Stau- und Flusskontrollmechanismen, welche bei größeren Übertragungslasten nützlich sind.
Trotz allem wird die Übertragung von CoAP über UDP immer noch präferiert, wenn es eine geringe Anzahl an Knoten gibt und die Übertragung blockweise ablaufen soll. Der Nachteil von CoAP über TCP ist, dass es zu größeren Paketen, erhöhten RAM und einer höheren Codegröße führt.
Sicherheitsaspekte:
Bei der UDP Übertragung ist das DTLS-Protokoll ein sehr wichtiger Bestandteil, da es die drei Aspekte von Sicherheit abdeckt vollkommen abdeckt und somit eine sichere End-to-End Verbindung erlaubt:
Die IETF hat das DTLS Protokoll weiterentwickelt und für die Nutzung mit TCP erweitert. Dadurch können die Problem von Neuordnungen von Paketen und Paketverlusten behoben werden, indem Paketwiederholungen, Sequenznummer während eine TCP-Handshakes und Wiederholungserkennungen implementiert wurden.
Quellen
- Shelby, Zach, Hartke, Klaus, Bormann, Carsten: The Constrained Application Protocol (CoAP). Abgerufen am 21. Juni 2017 (englisch).