Zum Inhalt springen

„Constrained Application Protocol“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
K Tabelle angepasst..
K Grundlegende Rechtschreibung und Grammatik korrigiert
Zeile 2: Zeile 2:


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).
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 [[Eingebettetes System|eingebettete]] Geräte weiterentwickeltes Protokoll, welches die Grundzüge von [[Representational State Transfer|REST]] übernimmt. Das Protokoll ist im RFC 7252 spezifiziert.
Es ist ein speziell für [[Eingebettetes System|eingebettete]] Geräte entwickeltes Protokoll, welches die Grundzüge von [[Representational State Transfer|REST]] übernimmt. Das Protokoll ist im RFC 7252 spezifiziert.


Die Anwendung vom CoAP Protokoll reicht von Umgebungsüberwachungen, intelligente Gebäude- und Lichtsteuerungen, Smart Energy und noch vieles mehr in dieser Sparte. Es wurde entwickelt um ein Standardprotokoll zu werden, welches die Interaktion zwischen IoT-Geräte/Systeme zur ermöglichen und somit die IoT-Anwendungen zu unterstützen. Wichtig dabei ist, dass das CoAP Protokoll die Länge des Datagramm so gering wie möglich hält und gleichzeitig das REST-Protokoll integriert, um den „[[Uniform Resource Identifier]]“ (URI) zu unterstützen.
Die Anwendung vom CoAP-Protokoll reicht von Umgebungsüberwachungen, intelligenten Gebäude- und Lichtsteuerungen, Smart Energy und noch vielem mehr in dieser Sparte. Es wurde als Standardprotokoll entwickelt, das die Interaktion zwischen IoT-Geräten/Systemen ermöglicht und somit IoT-Anwendungen unterstützt. Wichtig dabei ist, dass das CoAP-Protokoll die Länge des Datagramms so gering wie möglich hält und gleichzeitig das REST-Protokoll integriert, um den „[[Uniform Resource Identifier]]“ (URI) zu unterstützen.


Funktionen:
Funktionen:
* Begrenztes Web-Protokoll das alle Anforderungen an M2M-Kommunikation (Machine to Machine) benötigt
* Begrenztes Web-Protokoll, das alle Anforderungen an M2M-Kommunikation (Machine to Machine) erfüllt
* Gewährleistung der Sicherheit durch DTLS
* Gewährleistung der Sicherheit durch [[Datagram Transport Layer Security|DTLS]]
* Asynchroner Nachrichtenaustausch
* Asynchroner Nachrichtenaustausch
* Geringer Overhead
* Geringer Overhead
* Geringe Komplexität bei der syntaktischen Analyse ([[Parser|Parsing]])
* Geringe Komplexität bei der syntaktischen Analyse ([[Parser|Parsing]])
* URI und Content-Type Unterstützung
* URI- und Content-Type Unterstützung
* Einfache Caching und Proxy Fähigkeiten
* Einfache Caching- und Proxy-Fähigkeiten
* UDP-Übertragung mit der optionalen Möglichkeit von Unicast und Multicast
* UDP-Übertragung mit der Möglichkeit von Unicast und Multicast


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 benutzt 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.
CoAP ein netzwerkorientiertes Protokoll, das 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 benutzt 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.


{| class="wikitable" style="text-align:center;"
{| class="wikitable" style="text-align:center;"
Zeile 34: Zeile 34:
|[[6LoWPAN]]
|[[6LoWPAN]]
|}
|}
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<ref>{{Literatur |Autor=C. Bormann, S. Lemay, H. Tschofenig, K. Hartke, B. Silverajan |Titel=CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets |Datum=2018-02 |ISSN=2070-1721 |Online=https://www.rfc-editor.org/rfc/rfc8323.html |Abruf=2022-05-15 |DOI=10.17487/RFC8323}}</ref>. 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.
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 Zugangsnetzen vollkommen blockiert und auch der UDP-Verkehr in einigen Netzwerken begrenzt wird, wurde CoAP über TCP [RFC793] und [[Transport Layer Security|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<ref>{{Literatur |Autor=C. Bormann, S. Lemay, H. Tschofenig, K. Hartke, B. Silverajan |Titel=CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets |Datum=2018-02 |ISSN=2070-1721 |Online=https://www.rfc-editor.org/rfc/rfc8323.html |Abruf=2022-05-15 |DOI=10.17487/RFC8323}}</ref>. Kürzere Bindungszeitüberschreitungen fordern mehr Keepalive-Nachrichten und erhöhen somit den Traffic. Des Weiteren nutzt TCP auch 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.
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öhtem Speicherverbrauch und einer umfangreicherem Code führt.


'''Sicherheitsaspekte:'''
=== '''Sicherheitsaspekte''' ===
Bei der UDP-Übertragung ist das DTLS-Protokoll ein wichtiger Bestandteil, da es die drei Aspekte von Sicherheit abdeckt und somit eine sichere End-to-End-Verbindung erlaubt:

Bei der UDP Übertragung ist das DTLS-Protokoll ein wichtiger Bestandteil, da es die drei Aspekte von Sicherheit abdeckt und somit eine sichere End-to-End Verbindung erlaubt:


* [[Integrität (Informationssicherheit)|Integrität]]
* [[Integrität (Informationssicherheit)|Integrität]]
Zeile 46: Zeile 45:
* [[Vertraulichkeit]]
* [[Vertraulichkeit]]


Die IETF hat das DTLS Protokoll weiterentwickelt und für die Nutzung mit TCP erweitert. Dadurch können die Probleme der Paketreihenfolge und -verluste behoben werden, indem Paketwiederholungen, Sequenznummern während eines TCP-Handshakes und Wiederholungserkennung implementiert wurden.
Die IETF hat das DTLS-Protokoll weiterentwickelt und für die Nutzung mit TCP erweitert. Dadurch können die Probleme der Paketreihenfolge und -verluste behoben werden, indem Paketwiederholungen, Sequenznummern während eines TCP-Handshakes und Wiederholungserkennung implementiert wurden.

'''Format:'''


=== '''Format''' ===
Die standardmäßige Übertragung erfolgt über UDP und basiert auf dem Grundsatz zum Austausch von kompakten Nachrichten. Dabei wird ein Binärformat in einfacher Form verwendet.
Die standardmäßige Übertragung erfolgt über UDP und basiert auf dem Grundsatz zum Austausch von kompakten Nachrichten. Dabei wird ein Binärformat in einfacher Form verwendet.


Zeile 77: Zeile 75:
* 4-Byte Header (fixe Größe)
* 4-Byte Header (fixe Größe)
* Token mit variabler Länge
* Token mit variabler Länge
* CoAP Optionen
* CoAP-Optionen
* Nutzdaten
* Nutzdaten



Version vom 16. Dezember 2022, 13:09 Uhr

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 entwickeltes Protokoll, welches die Grundzüge von REST übernimmt. Das Protokoll ist im RFC 7252 spezifiziert.

Die Anwendung vom CoAP-Protokoll reicht von Umgebungsüberwachungen, intelligenten Gebäude- und Lichtsteuerungen, Smart Energy und noch vielem mehr in dieser Sparte. Es wurde als Standardprotokoll entwickelt, das die Interaktion zwischen IoT-Geräten/Systemen ermöglicht und somit IoT-Anwendungen unterstützt. Wichtig dabei ist, dass das CoAP-Protokoll die Länge des Datagramms so gering wie möglich hält und gleichzeitig das REST-Protokoll integriert, um den „Uniform Resource Identifier“ (URI) zu unterstützen.

Funktionen:

  • Begrenztes Web-Protokoll, das alle Anforderungen an M2M-Kommunikation (Machine to Machine) erfüllt
  • Gewährleistung der Sicherheit durch DTLS
  • Asynchroner Nachrichtenaustausch
  • Geringer Overhead
  • Geringe Komplexität bei der syntaktischen Analyse (Parsing)
  • URI- und Content-Type Unterstützung
  • Einfache Caching- und Proxy-Fähigkeiten
  • UDP-Übertragung mit der Möglichkeit von Unicast und Multicast

CoAP ein netzwerkorientiertes Protokoll, das 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 benutzt 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.

Protokoll-Vergleich
HTTP CoAP
HTTP-Protokoll Anfrage/Antwort
Nachrichten
TCP UDP
IP 6LoWPAN

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 Zugangsnetzen 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[1]. Kürzere Bindungszeitüberschreitungen fordern mehr Keepalive-Nachrichten und erhöhen somit den Traffic. Des Weiteren nutzt TCP auch 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öhtem Speicherverbrauch und einer umfangreicherem Code führt.

Sicherheitsaspekte

Bei der UDP-Übertragung ist das DTLS-Protokoll ein wichtiger Bestandteil, da es die drei Aspekte von Sicherheit 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 Probleme der Paketreihenfolge und -verluste behoben werden, indem Paketwiederholungen, Sequenznummern während eines TCP-Handshakes und Wiederholungserkennung implementiert wurden.

Format

Die standardmäßige Übertragung erfolgt über UDP und basiert auf dem Grundsatz zum Austausch von kompakten Nachrichten. Dabei wird ein Binärformat in einfacher Form verwendet.

CoAP Nachrichtenformat
0 1 2 3
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Ver T Code Nachrichten ID
Token (variable Länge)
Optionen (Wenn vorhanden)
Payload (Nutzdaten)

Eine Nachricht besteht aus:

  • 4-Byte Header (fixe Größe)
  • Token mit variabler Länge
  • CoAP-Optionen
  • Nutzdaten

Quellen

Einzelnachweise

  1. C. Bormann, S. Lemay, H. Tschofenig, K. Hartke, B. Silverajan: CoAP (Constrained Application Protocol) over TCP, TLS, and WebSockets. Februar 2018, ISSN 2070-1721, doi:10.17487/RFC8323 (rfc-editor.org [abgerufen am 15. Mai 2022]).