18
Juni
2021
COAP -Protokoll für das "Internet der Dinge" - Verkehrsstudium
11:35

COAP -Protokoll für das "Internet der Dinge" - Verkehrsstudium

18 Juni 2021 11:35

Mit WIreShark удалось захватить два пакета нового сетевого протокола CoAP.

Fortsetzungrained Application Protocol (стандарт RFC 7252) предназначен для "Интернета вещей" и действует на основе UDP. Этот простой протокол позволяет общаться машинам между собой (M2M - machine to maChine).

* Das erste Paket - eine Anforderung für ein Gerät zum Server 188.34.167.226:
Frame 13: 103 bytes on wire (824 bits), 103 bytes captured (824 bits) on interface 0
Ethernet II, Src: Keenetic_0f:40:ef (50:ff:20:0f:40:ef), Dst: router.lan (c4:ad:34:45:6a:fb)
Internet Protocol Version 4, Src: 192.168.0.73 (192.168.0.73), Dst: static.226.167.34.188.clients.your-server.de (188.34.167.226)
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x00 (DSCP: CS0, ECN: Not-ECT)
Total Length: 89
Identification: 0xfaca (64202)
Flags: 0x4000, Don't fragment
Time to live: 64
Protocol: UDP (17)
Header checksum: 0x1ad3 [validation disabled]
[Header checksum status: Unverified]
Source: 192.168.0.73 (192.168.0.73)
Destination: static.226.167.34.188.clients.your-server.de (188.34.167.226)
User Datagram Protocol, Src Port: 56911 (56911), Dst Port: coap (5683)
Source Port: 56911 (56911)
Destination Port: coap (5683)
Length: 69
Checksum: 0x8392 [unverified]
[Checksum Status: Unverified]
[Stream index: 1]
Constrained Application Protocol, Confirmable, POST, MID:41783
01.. .... = Version: 1
..00 .... = Type: Confirmable (0)
.... 1000 = Token Length: 8
Code: POST (2)
Message ID: 41783
Token: 398d7e264ddd9768
Opt Name: #1: Uri-Path: a
Opt Name: #2: Uri-Query: cid=4cef9cfe-af0c-11e8-8f23-df6cd39224ef
Opt Name: #3: Uri-Query: r=ru
[Response In: 59]
[Uri-Path: /a]

zweites Paket - Serverantwort

Frame 59: 75 bytes on wire (600 bits), 75 bytes captured (600 bits) on interface 0
Ethernet II, Src: router.lan (c4:ad:34:45:6a:fb), Dst: Keenetic_0f:40:ef (50:ff:20:0f:40:ef)
Internet Protocol Version 4, Src: static.226.167.34.188.clients.your-server.de (188.34.167.226), Dst: 192.168.0.73 (192.168.0.73)
0100 .... = Version: 4
.... 0101 = Header Length: 20 bytes (5)
Differentiated Services Field: 0x40 (DSCP: CS2, ECN: Not-ECT)
Total Length: 61
Identification: 0xa920 (43296)
Flags: 0x4000, Don't fragment
Time to live: 52
Protocol: UDP (17)
Header checksum: 0x7859 [validation disabled]
[Header checksum status: Unverified]
Source: static.226.167.34.188.clients.your-server.de (188.34.167.226)
Destination: 192.168.0.73 (192.168.0.73)
User Datagram Protocol, Src Port: coap (5683), Dst Port: 56911 (56911)
Source Port: coap (5683)
Destination Port: 56911 (56911)
Length: 41
Checksum: 0x38a3 [unverified]
[Checksum Status: Unverified]
[Stream index: 1]
Constrained Application Protocol, Acknowledgement, 2.04 Changed, MID:41783
01.. .... = Version: 1
..10 .... = Type: Acknowledgement (2)
.... 1000 = Token Length: 8
Code: 2.04 Changed (68)
Message ID: 41783
Token: 398d7e264ddd9768
End of options marker: 255
[Request In: 13]
[Response Time: 0.049948917 seconds]
[Uri-Path: /a]
Payload: Payload Content-Format: application/octet-stream (no Content-Format), Length: 2
Data (20 bytes)
Data: 3138382e3133342e38362e3232363a3536393131
[Length: 20]

COAP -Pakete Analyse:
Zielhafen - 5683 , Protokoll udp .
Im ersten wird der Zeiger übertragen ( uri-Query: cid=) во втором возвращается значение (Data).
Server static.226.167.34.188.clients.your-server.de (188.34.167.226)
Die Länge des Anfragepakets 89 Byte, die Antwort besteht aus 41 Byte.

Wie Sie sehen können, enthält die Antwort in diesem Fall eine Zeile in Form einer Reihe von Hexadezimalzahlen ohne Leerzeichen:
31 38 38 2e 31 33 34 2e 38 36 2e 32 32 36 35 36 36 31 31 31 31 31 31 31 31 31 31 31
(Diese digitalen Daten können beispielsweise Steuerbefehle für das endgültige Gerät oder im Gegenteil der Telemetrie für die Serverfelder über die Ein-/Aus -Tasten, Informationen über Temperatur, Spannung, Tonerpegel und die Anzahl der gedruckten Seiten enthalten.)

Was ist das COAP -Internetprotokoll?

Das COAP -Protokoll ist ein vereinfachtes HTTP -Protokoll, das über UDP arbeitet.
Im Gegensatz zum HTTP, dem Protokoll, das ausschließlich Text ist, kann COAP auch in der Anforderung und Antwort und binärer Daten übertragen.

Da die UDP keine Lieferung garantiert, wird die Empfangskontrolle implementiert.

Um die Ressourcen des Übertragungskanals zu speichern, wird COAP häufig im CoAP-Protokoll " Piggy-B verwendetacked " antwort. (In Logistik im Bereich des Frachttransports, dieser Begriff "Piggyback" es bedeutet Assoziierte Frachtlieferung ). Hier werden die Ergebnisse des Antrags sofort an die Rezeption gesendet.

Для передачи текста в запросах и ответах используется кодировка UTF-8. Если в качестве запроса или полезной нагрузки используется строка, то её длина не превышает 270 байт. Что сделано для маломощных устройств (с малым объемом ОЗУ). Но некоторые теги могут повторяться по нескольку раз, чтобы передать всю необходимую информацию.

Sicherheit : Die Antwort muss der Anforderung ( "Anforderung/Antwortübereinstimmung" ) entsprechen.
In Piggy-BackED -Antwort auf den Antwort -Toke sollte dem Query -Token entsprechen.

Anfrage:
Anfrage

Antwort:
Antwort

Ich stelle fest, dass die Zeit zwischen der Anfrage und der Antwort klein ist - nur 50 Millisekunden.

Beschreibung der Felder der Anfrage und Antwort

Die Optionen sind in zwei Gruppen von "kritisch" und "optional" unterteilt. Der Unterschied besteht darin, wie die Parameter nerespaned vom Endpunkt verarbeitet werden:

  • Die optionalen Parameter, wenn ihr Wert vom Endpunkt nicht erkannt wird, sollten stillschweigend ignoriert werden.
  • Nicht anerkannte Parameter der Klasse "kritisch" in der korrekt kompilierten Anfrage sollten den Fehler "schlechter Option" verursachen. Diese Antwort sollte eine geeignete Person enthalten, um eine Fehlermeldung zu lesen.
  • Alle unerkannten "kritischen" Nachrichten in der Antwort müssen mit der Nachricht zum Neustart abgelehnt werden
  • Die optionalen Parameter in der Antwort des Servers, die vom Client nicht erkannt wurden, müssen stillschweigend ignoriert werden.

Kritische und optionale Nachrichten aus dem "obligatorischen" sollten unterschieden werden. Keine COAP -Option ist obligatorisch. Alle diese Regeln werden für die Verarbeitung unerkannter (oder nicht realisierter) Anforderungen und Antworten erfunden.

Nr. Kritisch Name Format Länge, Byte Beschreibung
1 Ja Inhaltstyp uint 0-2 Art des Nachrichtenformats
0 - text/plain; charset=utf-8
40 - application/link-format
41 - application/xml
42 - application/octet-stream
47 - application/exi
50 = application/JSON
2 Nein Max-alter uint 0-4 60 Sekunden für Standard - maximale Antwortzeit in Sekunden von 0 bis 2^32-1
3 Ja P.roxy-Uri string 1-270 Запрос к proxy, а не к серверу. Содержит URI для запроса к proxy, Proxy-UrIch kann als Anfrage an Kesh betrachtet werden.
4 Nein ETag скрытый 1-8 Дополнительный "ярлык" для проверки безопасности. Ответ будет возвращен, только если проверка EtaG Server war erfolgreich. Wenn er erfolgreich ist, muss der Server * die Antwort senden.
5 Ja uri-Host str 1-270 Internet -Host - Serveranfragen.
6 Location-Path string 1-270 Аналогичен Uri-PaTh, kann aber in der Anfrage mehrmals angegeben werden
7 Ja uri-PorT uint 0-2 Internetport auf dem Server
8 Location-Query string 1-270 Аналогичен Uri-Query, kann aber mehrmals in der Anfrage angegeben werden
9 Ja uri-Path str 1-270 Das Internet ist der absolute Pfad auf dem Server zur Ressource
11 Ja Zuken скрытый 1-8 Токен безопасности (в ответе и запросе TokEn muss übereinstimmen)
12 Nein Akzeptiere uint 0-2 Arten von Daten, die von Client wahrgenommen werden, siehe Inhaltstyp
13 Ja If-match скрытый 0-8 Предварительные условия. Ответ поступит только если выполнено условие (совместно с тэгом ETag) - wird für wettbewerbsfähige Abfragen verwendet, um Daten mehrerer Kunden zu aktualisieren, um das Umschreiben von Daten zu vermeiden
15 Ja Uri-Query str 1-270 Der Name der Zielressource auf dem Terminserver. Kann Symbole außer außerhalb dessen enthalten. "Und" .. ". Codierung (russische) Buchstaben mit %werden nicht verwendet. Nur die Symbole des UTF-8 sind impliziert.
21 Ja If-none-match нет 0 Обратное условие If-Match. Ответ поступит только если условие не выполнено. См. If-MaTCH - Die Logik der Arbeit ist umgekehrt.

Schlussfolgerungen:

  1. Mit WI das Internet der Dinge studierenreShark открывает лишь наружную часть протокола (можно узнать IP адрес сервера, запрошенный URI ресурс и ответ - данные в закодированном или ином нечитаемом для человека виде).

  2. Obwohl die Anfrage und die Daten dekodiert wurden, ist es unmöglich, die interne Logik der Anwendung zu verstehen: herauszufinden, warum das Gerät für den Eigentümer der Domäne bestimmt ist, in der die Daten gesendet wurden.

  3. Die Pakete, die ich abgefangen habe, sind sehr kurz - ungefähr 40-89 Bytes lang. Pakete sind in Gruppen: Anforderungsantwort.

  4. Der Zeitraum zwischen Programmen (Pakete und Gruppen) im COAP -Standard kann sehr signifikant sein - von einigen Minuten bis zu vielen Monaten oder sogar Jahren.

Coap -Schutz unter Verwendung von DTLs

Wenn eine erhöhte Sicherheit und den Schutz des Inhalts vor Lesen und Veränderungen während der Übertragung erforderlich sind, kann zusammen mit COAP verwendet werden Dtls - реализация TLS поверх UDP. При использовании DTLS обеспечивается защита соединений и протоколов, а также самих данных.


Quellen:



Verwandte Veröffentlichungen