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 | |
0x01 |
Flood | |
0x02 |
Direct | |
0x03 |
Transport Direct |
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!←