Die Post geht ab - ein Paket kommt an!

Mit deinem kleinen Radio verschickst und empfängst du Pakete!? Wie ‘sehen’ diese generell aus?

Ein MeshCore-Paket ist maximal 256 Bytes gross (das ist die sogenannte MTU – Maximum Transmission Unit). Es ist aufgebaut wie ein ‘fetter Brief’ also mit Umschlag, Adresszettel, Wegbeschreibung und dem eigentlichen Inhalt.

1. Header – Der Umschlag (1 Byte)

Der Header ist nur ein einziges Byte (8 Bits), aber darin steckt erstaunlich viel Information – dicht gepackt wie ein gut gefüllter Koffer:

Bits Was steckt drin? Beschreibung
Bit 0–1 Route Type Wie wird das Paket weitergeleitet?
Bit 2–5 Payload Type Was ist im Paket drin?
Bit 6–7 Payload Version Welche Protokoll-Version?

1.1. Route Types (Bit 0–1):

Stell dir vor, du schickst einen Brief:

Wert Name Alltagsvergleich
0x00 Transport Flood :loudspeaker: Wie ein Flugblatt: An alle verteilen, aber nur in der eigenen Region
0x01 Flood :megaphone: Wie ein Megafon: An alle, ohne Filter
0x02 Direct :envelope: Wie ein adressierter Brief: Direkt zum Empfänger über bekannte Route
0x03 Transport Direct :envelope::round_pushpin: Adressierter Brief mit Regionscode

1.2. Payload Types (Bit 2–5):

Was ist im Paket drin? Hier die wichtigsten:

Wert Typ Beschreibung
0x00 REQ Anfrage an einen Knoten (verschlüsselt)
0x02 TXT_MSG Textnachricht (verschlüsselt)
0x03 ACK Empfangsbestätigung (unverschlüsselt)
0x04 ADVERT Knoten-Werbung: “Hallo, hier bin ich!” (signiert)
0x05 GRP_TXT Gruppen-Nachricht (verschlüsselt)
0x09 TRACE Pfad-Verfolgung (unverschlüsselt)
0x0F RAW_CUSTOM Eigene/benutzerdefinierte Daten

2. Transport Codes – Die Regionsstempel (0 oder 4 Bytes)

Nur vorhanden bei Route Type 0x00 oder 0x03. Das sind zwei 16-Bit-Werte:

[Region-Code (2 Bytes)] [Reserviert (2 Bytes)]

Alltagsvergleich: Wie eine Postleitzahl auf dem Brief. Repeater können anhand des Region-Codes entscheiden: “Leite ich dieses Paket weiter oder nicht?”


3. Pfad-Länge – Der Laufzettel-Kopf (1 Byte)

Dieses Byte sagt, wie viele Stationen das Paket schon durchlaufen hat und wie gross die einzelnen Adressen (Hashes) sind.

Bits Bedeutung
Bit 0–5 Anzahl Hops (0–63)
Bit 6–7 Hash-Grösse (1–3 Bytes pro Knoten)

4. Pfad – Die Wegbeschreibung (0–64 Bytes)

Hier stehen die Kurzadressen (Hashes) aller Repeater, die das Paket durchlaufen hat oder durchlaufen soll.

Alltagsvergleich: Stell dir einen Paketschein vor, auf dem jeder Zwischenstopp abgestempelt wird. Bei Flood-Routing wird der Pfad unterwegs aufgesammelt, bei Direct-Routing steht die Route schon drauf.


5. Payload – Der eigentliche Briefinhalt (bis ca. 184 Bytes)

Hier stecken die eigentlichen Daten drin. Je nach Payload-Typ sieht die Struktur unterschiedlich aus:

Für verschlüsselte Peer-to-Peer Nachrichten:

Feld Grösse Beschreibung
dest_hash 1 Byte Kurzadresse des Empfängers
src_hash 1 Byte Kurzadresse des Absenders
MAC 2 Bytes Prüfsumme (abgekürzt aus HMAC-SHA256) – wie ein Siegel auf dem Brief
encrypted_data variabel Die eigentliche Nachricht, verschlüsselt mit ECDH-Shared-Secret

Für anonyme Anfragen:

Hier wird ein temporärer Schlüssel mitgeschickt, damit der Absender anonym bleibt.

Die Flood-Nachricht ‘packen’ wir später unter einem separaten Thema aus!

7 Likes