Namensauflösung
Als Namensauflösung bezeichnet man Verfahren, die es ermöglichen, Namen von Rechnern beziehungsweise Diensten in vom Computer bearbeitbare, meist numerische Adressen zu übersetzen.
Für Menschen sind Namen wie beispielsweise „www.wikipedia.org“ einfacher zu merken und zu verwenden als numerische Adressen. Für Computer und Netzwerkkomponenten sind Zeichenketten hingegen unhandlich beziehungsweise ineffizient verarbeitbar. Die Namensauflösung vermittelt zwischen diesen beiden Anforderungen, indem sie Namen in Adressen und unter Umständen auch zurück übersetzen kann. Im Fall von Web-Adressen (URLs) wird die enthaltene Domain (zum Beispiel „www.wikipedia.org“) mit dem Domain Name System in eine IP-Adresse (zum Beispiel „91.198.174.232“) konvertiert.
Anwendungsfälle
Namensauflösung wird in vielen Bereichen verwendet. Ein sehr bekannter Anwendungsfall ist das Übersetzen von Rechnernamen beziehungsweise Domainnamen in Netzwerkadressen. Darüber hinaus sind auch vielen Netzwerkdiensten Namen zugewiesen. Das in Webbrowsern wie Firefox zum Abrufen von Webseiten verwendete „http“ Protokoll wird beispielsweise zur eben erwähnten Netzwerkadresse und zum TCP-Port „80“ aufgelöst. Protokollnamen wie „TCP“ haben ihrerseits wieder eine zugehörige Nummer, zum Beispiel „17“ (Protocol-ID im Header) für „UDP“.
Unter Unix ist jedem Benutzer und jeder Gruppe eine Identifikationsnummer (UID beziehungsweise GID) zwischen 0 und 65535 zugeordnet. Auch hier meldet sich der Benutzer mit seinem Namen an, die Überprüfung von Zugriffsrechten erfolgt jedoch anhand der numerischen UID und der GIDs der Gruppen, zu denen der Benutzer gehört. Programme wie „ls“ und „ps“ konvertieren hingegen die numerischen IDs wieder zu Namen, um für den Benutzer eine gut lesbare Ausgabe zu erzeugen.
Verfahren
Es gibt mehrere Verfahren, die zur Namensauflösung eingesetzt werden können. Oft kommen mehrere Verfahren zum Einsatz, die in einer bestimmten Reihenfolge abgefragt werden, bis eines eine gültige Antwort liefern konnte.
Die Namensauflösung beispielsweise eines Windows-Rechners in einem SMB-Netzwerk (Hybrid-Knoten) erfolgt in dieser Reihenfolge[1]:
- DNS-Namenszwischenspeicher (DNS-Cache): Der DNS-Cache auf dem lokalen Computer wird durchsucht.
- Hosts-Datei: Die Hosts-Datei auf dem lokalen Computer wird durchsucht.
- DNS-Abfrage: Es wird eine Anfrage an einen DNS-Server im Netzwerk gesendet.
- NetBIOS-Namenszwischenspeicher: Der NetBIOS-Namenszwischenspeicher wird auf dem lokalen Computer durchsucht.
- WINS-Abfrage: Es wird eine Anfrage an einen WINS-Server im Netzwerk gesendet.
- Broadcast: Es wird ein NetBIOS-Broadcast an das eigene Subnetz gesendet.
- Lmhosts-Datei: Die Lmhosts-Datei auf dem lokalen Computer wird durchsucht.
Lokale Konfigurationsdateien
Die einfachste Möglichkeit der Namensauflösung stellen lokale Dateien dar, die eine entsprechende Zuordnung enthalten. In Textdateien wird – wie in einer Tabelle – einem Namen eine oder mehrere Adressen beziehungsweise Nummern zugeordnet.
Verwendet werden lokale Konfigurationsdateien, wenn eine zentrale Organisation der Daten nicht erforderlich ist oder wenn sich die Daten sehr selten ändern. Da diese Dateien lokal vorhanden sind, funktioniert die Auflösung auch dann noch, wenn das Netzwerk ganz oder teilweise ausgefallen ist. Daher werden sehr wichtige Daten häufig (auch) in lokale Dateien eingetragen.
Beispiele (UNIX):
/etc/passwd
Lokale Benutzerdatenbank. Hier sind der Administrator-Benutzer („root“) und System-Benutzer von Diensten (beispielsweise der Benutzer, mit dessen Rechten der Webserver arbeitet) eingetragen. Findet keine zentrale Benutzerverwaltung statt, sind hier auch „normale“ Benutzer eingetragen./etc/protocols
Von der IANA zugewiesene Protokollnamen und -nummern. Diese Daten ändern sich sehr selten./etc/hosts
(s. hosts-Datei)
Lokale Tabelle für Hostnamen. Hier ist zum Beispiel der Alias „localhost“ definiert. Ein Webserver könnte hier den Namen des Datenbankservers eintragen, um auch dann noch mit der Datenbank kommunizieren zu können, wenn die netzwerkbasierte Namensauflösung ausfällt.
Bildlicher Vergleich:
Das Adressbuch in einem Mobiltelefon ist vergleichbar mit einer lokalen Konfigurationsdatei: Die gespeicherten Telefonnummern kann man nachschlagen, ohne eine andere Person zu fragen. Die Information ist auch dann verfügbar, wenn die Telefonauskunft aufgrund eines technischen Fehlers nicht erreichbar ist. Dafür wird das Adressbuch nicht automatisch gepflegt: Eine etwaige neue oder geänderte Telefonnummer erscheint nicht automatisch im Adressbuch.
Broadcast
Über einen Broadcast im direkt angeschlossenen Netz wird versucht, den Namen ausfindig zu machen. Dieses Vorgehen wird beispielsweise von ARP in Ethernet-Netzwerken verwendet, um die MAC-Adresse zu einer IPv4-Adresse herauszufinden.
Bildlicher Vergleich:
Man ruft im Großraumbüro, in dem man sich befindet, den Namen des Partners, mit dem man telefonieren möchte und bittet um seine Telefonnummer. Wenn man diese bekommen hat, kann man den gewünschten Partner anrufen. Prinzipbedingt können nur Personen erreicht werden, die sich im selben Raum aufhalten.
Spezielle Dienste
Der Rechner erfragt die gewünschte Information bei einem speziellen Netzwerkdienst. Je nach Anwendungsfall kommen andere Dienste zum Einsatz. Durch die zentrale Datenhaltung können Änderungen an einer Stelle durchgeführt werden, abfragende Rechner müssen nicht angepasst werden.
Beispiele:
- Domain Name System (DNS)
Kann Hostnamen beziehungsweise Domainnamen zu Adressen auflösen. Dieser Dienst ist die im Internet verwendete Namensauflösung, beispielsweise um die IP-Adresse für „www.wikipedia.de“ nachzuschlagen. - Windows Internet Naming Service (WINS)
Löst NetBIOS-Namen auf. Die Daten werden von Client-Rechnern an den WINS-Server gemeldet, so dass eine manuelle Konfiguration nicht notwendig ist. - Lightweight Directory Access Protocol (LDAP)
Kann zur Benutzer- und Gruppenverwaltung von POSIX-Accounts verwendet werden. LDAP bildet auch die Grundlage für den Active-Directory-Dienst von Windows-Systemen.
Bildlicher Vergleich:
Man kennt (lediglich) die Telefonnummer der Telefonauskunft. Diese ruft man an, um die Telefonnummer einer dritten Person herauszufinden. Neue Telefonnummern müssen lediglich der Auskunft, nicht aber jedem Telefonbesitzer mitgeteilt werden. Wenn die Auskunft technische Probleme hat, kann man hingegen nur noch telefonieren, wenn man eine alternative Möglichkeit hat die Telefonnummer ausfindig zu machen.
Lokaler Cache
Der Computer sieht in seinem lokalen Cache nach, ob er diesen Namen schon einmal aufgelöst hat. Wenn ja, befindet sich im Cache die benötigte Adresse / Nummer, die er wiederverwenden kann. Dieses Zwischenspeichern wird insbesondere in Verbindung mit Namensdiensten verwendet, um die Anzahl der Zugriffe zu reduzieren und um die Auflösung zu beschleunigen.
Bildlicher Vergleich:
Man möchte jemanden anrufen, mit dem man vor kurzem schon einmal telefoniert hat. Also drückt man einfach die Wahlwiederholung, da das Telefon die letzten Nummern noch gespeichert hat.
Reihenfolge
Die Reihenfolge ist nicht standardisiert, sondern hängt von verschiedenen Faktoren ab.
- vom verwendeten Betriebssystem:
So priorisiert z. B. Windows XP und Windows 2000 die DNS-Namensauflösung und Windows NT die NetBIOS-Namensauflösung. - von den verwendeten Protokollen IP oder NetBIOS over TCP/IP:
Wird nur das Protokoll IP verwendet, kann der Name nur mit der DNS-Namensauflösung in eine IP-Adresse aufgelöst werden. Wird NetBIOS over TCP/IP verwendet, kann die NetBIOS- und die DNS-Namensauflösung zum Einsatz kommen. - von Konfigurationsdateien und Optionen:
Bei UNIX-artigen Systemen wird die Reihenfolge durch Einträge in der Datei/etc/nsswitch.conf
(/etc/netsvc.conf
bei AIX) festgelegt. Die Samba- und Samba-TNG-Server kennen die Option „name resolve order“. Bei Windows kann man seit Windows NT 3.5 die Reihenfolge unter dem Registry-Key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\ServiceProvider einstellen (kleine Zahl bedeutet hohe Priorität). Standard unter Windows 7 ist 1. lokaler Name, 2. hosts-Datei, 3. DNS und 4. NetBIOS.[2]
Sonderformen
- Host Header (HTTP Server)
Mit diesem Verfahren kann ein Webserver so konfiguriert werden, dass Websites unterschiedlichen Namens dieselbe IP-Adresse haben. Zur Unterscheidung nutzt der Webserver den im HTTP-Request enthaltenen Host Header. Die verschiedenen Websites werden in diesem Fall auch als (namensbasierte) Virtual Hosts bezeichnet.
Bildlicher Vergleich:
Man ruft eine Telefonnummer an, die man auf einem der oben beschriebenen Wege ermittelt hat. Dem sich (unter dieser Nummer) meldenden Gesprächspartner sagt man, wen genau man sprechen möchte.