-
Notifications
You must be signed in to change notification settings - Fork 1
ACK Message
| source | flag | ttl | destination | ack_id |
Nachdem der Zielknoten eine Textnachricht empfangen hat, sendet er eine Empfangsbestätigung an alle Knoten im Empfangsbereich.
- | ist das Trennzeichen das vor und nach jedem Feld eingefügt wird.
- source enthält die Adresse des absendenden Knotens im vierstelligen Format
- flag enthält den Integer Wert 2
-
ttl enthält die noch verbleibenden hops bis die Nachricht verworfen wird im einstelligen Format
- Der ursprüngliche Absender setzt den Startwert = 5.
- jeder weitere sendende Knoten subtrahiert 1
- bei 0 verarbeitet der Knoten das Paket, aber verwirft es danach.
- destination hierbei handelt es sich um den Zielknoten der Empfangsbestätigung, also dem ursprünglichen Absender der Textnachricht
- ack_id id der Bestätigungsnachricht: wird mittels des md5 Algorithmus berechnet, indem die Adresse des Absenders und der Payload der empfangene Textnachricht gehasht wird und nur die ersten 6 Stellen des Hashwerts als id verwendet werden.

Beispiel:
Knoten1 sendet an Knoten2 eine Textnachricht:
|Kn1|1|9|Kn2|Kn2|Hello World!|
Knoten2 empfängt diese Nachricht und sendet nun ein Acknowledgement an Knoten1. Hierfür wird die Absenderadresse und der Payload der Nachricht konkateniert, sodass sich der String Kn1Hello World!ergibt. Dieser wird dann mittels des md5-Hashalgorihtmus gehasht. Dabei ensteht der Hashwert deefaeb69092bb54b4fbbb0bba7c75af. Als ack_idwerden nur die ersten 6 Stellen des Hashes verwendet. Also sendet Knoten2 die folgende Nachricht an Kn1:
Kn2|2|9|Kn1|deefae|
Knoten1 kann mittels der eigenen Adresse und des Payloads der abgesendeten Nachricht ebenfalls die ack_id berechnen und mit der empfangenen ack_id von Knoten2 vergleichen.
Nodes, die eine ACK-Nachricht weiterleiten warten eine zufällige Zeit zwischen 0 und 2 Sekunden, bevor sie die Nachricht verschicken.