Angenommen, ich habe die IP- und MAC-Adresse eines Computers in einem Netzwerk und möchte ihm eine UDP-Nachricht senden. Indem ich die MAC- und IP-Adressen der gesendeten Nachricht auf die angegebene Adresse initialisiere, sollte der Netzwerkrouter die Nachricht, wenn er sie empfängt, an den Computer mit derselben MAC-Adresse weiterleiten ... richtig?
Ich frage, weil ein Programm, das ich schreibe, mit dieser Einschränkung nicht klarzukommen scheint. Es funktioniert prima, wenn es sich im selben Netzwerk befindet, aber ansonsten ... nichts.
Danke
Antwort1
Wenn Sie eine App erstellen, die einen UDP-Socket öffnet und Datenverkehr an ein bestimmtes Ziel sendet, müssen Sie sich nur um die IP-Adressen kümmern. Wenn Ihr Listener auf Schicht 2 arbeitet, d. h. wenn sich beide Systeme im selben Subnetz befinden, sollte er beim Wechsel auf Schicht 3 genauso funktionieren, vorausgesetzt, Ihr Netzwerk ist richtig eingerichtet. Wenn dies fehlschlägt, versuchen Sie es mit etwas, von dem Sie wissen, dass es funktioniert. Es gibt viele Diagnose-Apps, aber die einfachste ist wahrscheinlichNetzkatze, installieren Sie es und versuchen Sie Folgendes:
Auf Ihrem Zielsystem:
nc -l -u -p 1234
Auf Ihrem Quellsystem
nc -u -p 1234
Ändern Sie die Portnummer in die Nummer, die Sie für Ihre App verwenden. Dann sollten Sie alles, was Sie in der Quelle eingeben, auf der Zielkonsole sehen können, vorausgesetzt, Ihr Layer-3-Netzwerk ist richtig eingerichtet und blockiert UDP über diesen Port nicht.
Wenn Sie die MAC-Adresse in die Nutzlast einbetten, ist das eine Sache, aber die im Ethernet-Frame eingebetteten Quell- (und Ziel-)MAC-Adressen werden vom Router geändert, so funktioniert es. Wenn Ihre App erwartet, dass sie an beiden Enden der Konversation gleich bleiben, schlägt sie fehl, aber im Allgemeinen sollten Sie nicht so tief in den Netzwerkstapel eintauchen. Was verwenden Sie, um dies zu erstellen?
Antwort2
Es gibt zwei Fälle:
1- Wenn Sie das Paket an einen Host innerhalb desselben Subnetzes senden, wird es unter Verwendung der MAC- und IP-Adressen des Zielcomputers direkt an diesen gesendet.
2- Wenn Sie es an einen Host in einem anderen Subnetz senden, sollte es an Ihren Router gesendet werden. Die Ziel-MAC ist also die des Routers und die Ziel-IP die des endgültigen Ziels.
Durch die Untersuchung der IP- und Subnetzmaske können Sie feststellen, welcher Fall bei Ihnen vorliegt.
Antwort3
Wenn sich Ihre Computer im selben Subnetz befinden, ist für die Kommunikation kein Router erforderlich. Wenn Sie zum Router gelaufen sind, ändert der Router die Quell-MAC-Adresse in die Router-MAC. Wenn der Router das Paket empfängt, wechselt er zurück zur internen MAC.