Wie sendet man einen Ethernet-Frame richtig an einen anderen Computer im lokalen Netzwerk?

Wie sendet man einen Ethernet-Frame richtig an einen anderen Computer im lokalen Netzwerk?

Ich habe vor Kurzem angefangen, mich mit dem OSI-Modell, Netzwerken und anderen Dingen zu beschäftigen.
Da ich gerne in C programmiere, wollte ich meine eigenen Ethernet-Frames senden.

Ich habe es jetzt zum Laufen gebracht; allerdings bin ich mir bei einer Sache noch unsicher:
Beim Senden eines Ethernet-Frames von der MaschineAzur MaschineB(vorausgesetzt, beide Rechner sind im selben Netzwerk), welche MAC-Adresse muss ich angeben alsZielMAC-Adresse des Rahmens?
Ich habe sowohl die MAC-Adresse meines Routers als auch die MAC-Adresse der Maschine ausprobiertB, beide Wege funktionieren. Um die MAC-Adresse des Computers zu erhaltenB, ich habe einfach eine ARP-Anfrage gestellt.

Doch was ist der richtige Weg?

Ich habe den Verkehr mit Wireshark auf der Maschine überwachtAund mittcpdumpauf der MaschineB. Das ist die Ausgabe auf der MaschineB( e0:d5:5e:c6:52:9aist die MAC-Adresse des ComputersB):

Bei der Angabe von MaschinenB's MAC-Adresse als Zieladresse ( a0:ce:c8:10:75:8cist die NIC-MAC der MaschineA):

18:42:46.152800 a0:ce:c8:10:75:8c > e0:d5:5e:c6:52:9a, ethertype IPv4 (0x0800), length 64: 192.168.178.21.23455 > 192.168.178.27.23456: UDP, length 5

Wenn Sie die MAC-Adresse des Routers als Zieladresse angeben ( c8:0e:14:fd:f3:23ist die NIC-MAC des Routers):

18:45:04.735375 c8:0e:14:fd:f3:23 > e0:d5:5e:c6:52:9a, ethertype IPv4 (0x0800), length 60: 192.168.178.21.23455 > 192.168.178.27.23456: UDP, length 5

Dieses Ergebnis zeigt, dass der Router dieQuelleMAC-Adresse und verwendet wahrscheinlich seinen Cache, um die richtige Ziel-MAC-Adresse für die Ziel-IP zu bestimmen.

Wie verarbeitet der Router den Frame, in dem die MAC-Adresse des ComputersBangegeben?

Gibt es einen Unterschied zwischen beiden Wegen?

Gibt es einen bevorzugten/richtigen Weg?

Antwort1

Wenn Sie wissen, dass sich der Zielcomputer im lokalen Subnetz befindet, ist die allgemein korrekte Methode, die MAC-Adresse des Zielcomputers direkt zu verwenden (ggf. mit einer ARP-Suche). Dies funktioniertegalvom Ethertyp oder Inhalt des Frames und umgeht im Allgemeinen den Router (er wird über den Ethernet-Switch kurzgeschlossen).

WennWenn der Frame IPv4 oder IPv6 enthält, können Sie ihn an den Router des Subnetzes senden, der eine ARP-Suche durchführt und die Nutzlast des Frames an den Host weiterleitet, zu dem die Ziel-IP-Adresse gehört. (Das ist es schließlich, was RouterTun:sie leiten IP-Pakete weiter – selbst wenn dies nur bedeutet, dass sie an dieselbe Schnittstelle zurückgespiegelt werden.)

Das Senden lokaler Pakete über einen Router ist jedoch ineffizient und in den meisten Fällen völlig unnötig. Bei billigeren Routern kann dies bedeuten, dass das Paket von einer sehr langsamen CPU verarbeitet wird (im Vergleich zur vollen Leitungsgeschwindigkeit des Ethernet-Switches).

Das heißt, die zweite MethodeIstwird in der Praxis gelegentlich zusammen mit „Client-Isolation“-Funktionen (auch „privates VLAN“ genannt) auf Switches und Zugriffspunkten verwendet.

Antwort2

Denken Sie daran, dass Ethernet keine Router hat. Router sind ein Konzept der Schicht 3 (Netzwerkschicht, wo z. B. IP liegt), also eine Schicht über Ethernet, von der Ethernet selbst nichts wissen sollte.

Die richtige Adresse, die in das Zielfeld des Ethernet-Headers eingetragen werden muss, ist die Ethernet-MAC-Adresse des Zielhosts.

In Ihrer Frage erwähnen Sie auch das Senden eines Ethernet-Frames an einen Host, und wie sich herausstellte, enthielt dieser Ethernet-Frame ein IP-Datagramm für einen anderen IP-Host als das Ethernet-Ziel, an das Sie es gesendet hatten. Dieser IP-Host fungierte also zufällig als Router und leitete Ihr IP-Datagramm für Sie weiter, indem er es an dasselbe Ethernet-LAN ​​zurückschickte, diesmal jedoch mit der richtigen Ethernet-Zieladresse, die der IP-Hostadresse entsprach, an die das IP-Datagramm adressiert war.

verwandte Informationen