Meine Situation sind folgende:Spiel mehr IP-Adressen zu einem Endpunkt
(ich weiß nicht, ob dies relevant ist, aber alle folgenden wird/soll mit c auf einer Linux-Maschine durchgeführt werden.)
Ich mache Peer-Erkennung in meinem lokalen Netzwerk mit IPv4-Broadcast-Pakete und IPv6-Multicast-Pakete. Peers, die ein Broadcast/Multicast-Paket von einem anderen Peer empfangen, senden eine Antwort zurück, die signalisiert, dass sie online sind.
Da ich auf allen Schnittstellen und unter Verwendung von sowohl IPv4 als auch IPv6 sende, erhalte ich mindestens zwei Antworten von einem Endpunkt (ein IPv4 und ein IPv6). Wenn ein anderer Endpunkt über mehrere Schnittstellen (WLAN + Ethernet) erreichbar ist, bekomme ich möglicherweise noch mehr Antworten von einem einzelnen Endpunkt.
In diesem Beispiel Peer 2 erhält drei Antworten von Peer 1 nach einem IPv4-Paket auf seinem WiFi und Ethernet-Karten senden und ein IPv6-Multicast-Paket mit seiner WiFi-Karte zu schicken. Peer 2 hat jetzt 3 Antworten vom gleichen Host mit unterschiedlichen IPs.
Meine Frage ist, ob es eine Möglichkeit gibt, all diese Antworten auf einen einzelnen Endpunkt zu übertragen, ohne irgendeine Art von ID in die Antwortpakete einzubetten.
Wenn das nicht möglich ist, wäre meine nächste Frage, wie man eine gute Identifikation auswählt. Die ID muss nicht pro Host eindeutig sein, sondern nur pro Host pro Sitzung. Eine einfache Zufallszahl könnte eine Kollision zwischen zwei Peers erzeugen, was ein Fall ist, den ich nicht behandeln möchte, wenn ich nicht muss. Die ID sollte auch kurz sein, um das Paket nicht zu sehr aufzublähen.
Ich freue mich über Kommentare/Antworten.
Was ist, wenn Sie nur die MAC-Adresse der Ethernet-Schnittstelle als ID verwenden? Das wird für jeden Host einzigartig sein. Es sind nur 6 Bytes, die nicht "aufgebläht" erscheinen, es sei denn, Sie arbeiten mit eingebetteten Geräten mit in Kilobyte gemessenem Speicher. – larsks
Ich habe schon darüber nachgedacht. Ich denke, dass dies nicht pro Host, sondern pro Netzwerkkarte einmalig sein wird. In dem gegebenen Beispiel könnte ich also beide WiFi-Pakete abgleichen, aber nicht alle drei. Nach meinem Wissen benötigt der Ethernet-Header rohe Sockets, die ich nicht verwenden kann, weil dies ohne besondere Privilegien funktionieren muss. – merl
Ich glaube, du hast mich falsch verstanden. Ich schlage nicht vor, dass Sie versuchen, die MAC-Adresse aus dem Header der eingehenden Pakete zu extrahieren. Ich schlage vor, dass * Sie auf dem sendenden Client * die MAC-Adresse in Ihre Nachricht als die Client-ID einbetten. – larsks