MAC-Adresse eindeutig für einen PC ? Bezug zu Netzwerk, wieso ?

rwolf

Bekanntes Mitglied
hi all,
war ich bisher der Meinung , die MAC-Adresse eines PC-Motherboard sei gleichbedeutend mit der Fahrgestellnumer eines KFz,
so verwirrt mich bei folgendem Code zur Ermittlung der MAC-Adresse, daß dort eine Instanz von einer Netzwerkklasse gezogen wird :
Code:
    public static void show_my_ipAmac_adresses()
    {
        String ip;
        try {
            Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
            while (interfaces.hasMoreElements()) {
                NetworkInterface iface = interfaces.nextElement();
                // filters out 127.0.0.1 and inactive interfaces
                if (iface.isLoopback() || !iface.isUp())
                    continue;

                Enumeration<InetAddress> addresses = iface.getInetAddresses();
                while(addresses.hasMoreElements()) {
                    InetAddress addr = addresses.nextElement();
                    ip = addr.getHostAddress();
                    System.out.println("mps show_my_ip_adresses "+iface.getDisplayName() + " " + ip);
                }
                
                //- MAC-Adresse ermitteln -----------------
                byte[] mac = iface.getHardwareAddress();

                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < mac.length; i++) {
                        sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? "-" : ""));		
                }
                System.out.println("Current MAC address : "+sb.toString());        
                
            }
        } catch (SocketException e) {
            throw new RuntimeException(e);
        }       
        
    }
Eigentlich müßte doch die MAC-Adresse unverändert bleiben, auch wenn man an der Netzwerkadresses etwas ändert,
oder ?

Gruß
RWolf
 
Die MAC-Adresse ist in dem NIC (Network Interface Controller) gespeichert. Die meisten Mainboards haben einen NIC integriert.
Der Code, den du gepostet hast, bezieht ja per NetworkInterface.getHardwareAddress() dann eben genau die MAC Adresse von der Netzwerkkarte.
Da ist kein Stück in dem Code, welches die MAC-Adresse aus irgendetwas anderem generiert bzw. von irgendetwas abhängig macht.
 
Noch kurz als Erklärung, was eine MAC Adresse überhaupt ist:
Im engeren Sinne hat die MAC Adresse überhaupt nichts mit dem Mainboard zu tun, sondern wird pro Netzwerkkarte (bzw. pro irgendeinem Adapter, der eine Schnittstelle zu einem Netzwerk bereitstellt) vergeben.
Wenn du z.B. etwa 2 zusätzliche Netzwerkkarten (das schließt auch WLAN-Adapter ein) in deinen Computer einbaust, dann wirst du auch zwei zusätzliche MAC Adressen haben.
MAC steht ja für "Media Access Control" und beschreibt letztlich eine Adresse, die von Netzwerkprotokollen wie Ethernet auf OSI-Ebene 2 (Data Link Layer) für den Zugriff auf ein Übertragungsmedium zur gesicherten Ende-zu-Ende Kommunikation innerhalb einer Kollisionsdomäne verwendet wird.
 
toll erklärt, dankeeee!
aha, also doch !
letztendlich suchte ich ein Eindeutiges Merkmal, das meiner Labor-Applik. eine EINDEUTIGE Erkennung eines bestimmten PC ermöglicht,
für den z.B. ein einer Datenbank ein Profil (Ausstattung !) hinterlegt ist..befürchte nun allerdings , sowas gibt es nicht !?
 
Naja, eindeutig wird der PC ja dadurch, dass die MAC Adresse(n) der enthaltenen NIC(s) eindeutig sind. Und ganz streng genommen, müssen die MAC Adressen nicht eindeutig sein, aber das kannst du getrost vernachlässigen und annehmen, dass sie es sind.
Also, du kannst schon die MAC Adresse verwenden.
Mit MAC Adressen hast du natürlich keine eineindeutige Zuordnung, nur eine eindeutige, da durch Austausch des Netzwerkadapters sich die Adresse natürlich ändert.
 
OK, also gegen allzu änderungswütige Serviceleute
(die mal so zwischendurch eben mal ne Karte auswechseln,
ohne jemand was davon zu sagen) würde es nur helfen ,
z.B. die Karte(n) an Motherboard festzuschweißen (Schutzgas ! V-Naht) soweit nicht sowieso darin integriert,
das Motherboard noch mit dem Gehäuse verschweißen
und die Inventarnummer ins Gehäuse einzubrennen
oder einzustanzen : dann hätte man den eineindeutigen PC 🙂)
 
Üblicherweise konfiguriert man PCs auch mit einem DNS/Netzwerknamen, den du auch nehmen kannst. Die Frage ist, wieso du die Identität der tatsächlichen Hardware brauchst (und welchen Teil davon eigentlich, potenziell kann man doch alles an einem Rechner austauschen, woher willst du dann noch wissen, dass es "derselbe" Rechner war), und nicht einfach "irgendeine" Identität, wie etwa den Netzwerknamen, den man dynamisch umkonfigurieren kann, um die Konfiguration bequem z.B. auf einen anderen PC zu übertragen.
Eigentlich halte ich eine wie von dir gewünschte Identität, die durch die tatsächliche Hardware definiert wird, für sehr unflexibel.
 
Nun, um das Thema mal abzuschliessen : es geht letztlich um eine möglichst reale aktuelle Inventarisierung
und vor allem um die Abschätzung des Aufwandes für Updates (z.B. auf Win10 ) :
wir haben ja auch Meßkarten mit daran hängenden Prüfmaschinen
(Updates dafür u.U. = Neuanschaffung so um 100000 EURO !)
sowie besonders hochauflösende Grafikkarten , und das in mehreren Niederlassungen auch im Ausland :
so ist eine Moderniserung teurer und schwieriger als bei reiner Verwaltungsumgebung (etwa Fibu).

Aber erstmal herzlichen Dank, kann das jetzt schon mal besser einschätzen !
Gute Zeit vom Wolf
 

Zurück
Oben