Wie ist des dann mit dem Netzwerk. Wenn die MAC-Adresse von einem anderen Rechner über WLAN abgefragt wird. Sieht er dann die geänderte oder die fest einprogammierte?
Die Netzwerkkarte wird vom jeweiligen Treiber gealden. Die Information liegen in einer bestimmten Struktur (
net_device) vor. Darunter auch die MAC-Adresse.
Hardware-(MAC-)Adreßlänge und Geräte-Hardware-Adressen. Die Ethernet-Adreßlänge beträgt sechs Oktetts (hier geht es um die Hardware-ID der Schnittstellen-Karte), und die Broadcast-Adresse besteht aus sechs 0xff- Oktetten. ether_setup initialisiert diese Werte korrekt. Die Geräte-Adresse muß dagegen aus der Schnittstellen-Karte ausgelesen und nach dev_addr geschrieben werden. Das Auslesen ist gerätespezifisch. Die Hardware-Adresse wird verwendet, um korrekte Ethernet-Header zusammenzustellen, bevor das Paket an den Treiber zur Übertragung übergeben wird.
Es kommt daher ganz auf die Hardware und den Treiber an. Die Adresse wird aus Effizienzgründen, denke ich mal, nur bei der Initalisierung geladen, aber nagel mich da jetzt nicht fest.
Was passiert jetzt, wenn die beiden Rechner kommunizieren möchten. Die Anwendung XYZ kennt die MAC-Adresse vor der Anfrage nicht. Du stellst eine Anfrage an eine IP-Adresse. Die Anwendung XYZ muss erst die passende MAC-Adresse für die IP-Adresse finden. Dies geschieht mit Hilfe des
Address Resolution Protocols (ARP). Dazu wird überprüft, ob die IP-Adressen der Kommunikationsteilnehmer im selben Subnetz liegen. Dies passiert, indem die Netzwerkmaske mit der IP-Adresse UND-verknüpft wird. Wenn die IP-Adresse
nicht im selben Subnetz liegen sollte, geht das Paket an das Standard-Gateway. Liegen sie im selben Subnetz wird versucht die MAC-Adresse herauszufinden. Dazu wird erstmal in einem Zwischenspeicher nachgesehen, ob er die MAC-Adresse schon vorhanden ist. Den Zwischenspeicher kann man sich so anschauen:
Falls das noch nicht der Fall ist, wird der andere Rechner erst mal das gesamte Subnetz zusammenbrüllen und nach der IP-Adresse fragen. Der Rechner mit der jeweiligen IP-Adresse antwortet dann und schickt ihm die MAC-Adresse. Diese ist die MAC-Adresse des net_devices. Die Adresse wird allerdings bei einer neuen Initialisierung durch den Treiber wieder auf den alten Wert zurückgesetzt werden. Du musst den Befehl nach jedem Start erneut ausführen.