# 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 (kurz DNS) 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 Protokoll HTTP wird beispielsweise zur eben erwähnten Netzwerkadresse und zum Port „80“ vom Transmission Control Protocol aufgelöst. Namen des IP-Protokolls haben ihrerseits wieder eine zugehörige Nummer. So ist z. B. dem Transmission Control Protocol (kurz TCP) im IP-Protokoll die ID „6“ zugewiesen, dem User Datagram Protocol (kurz UDP) die ID „17“.
Bei Unix-Dateirechten ist jedem Benutzer (engl. user) und jeder Gruppe (engl. group) eine Identifikationsnummer (ID) zwischen 0 und 65535 zugeordnet – die UID (user ID) beziehungsweise GID (group ID). 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:
* 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 werden– 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 der Namensauflösung hängt von verschiedenen Faktoren ab, darunter das verwendete Betriebssystem, die verwendeten Protokolle (IP oder NetBIOS over TCP/IP) sowie Konfigurationsdateien und Optionen. Hier sind einige Beispiele:
* Betriebssystem: Die Priorisierung der Namensauflösung kann je nach dem verwendeten Betriebssystem unterschiedlich sein. Zum Beispiel priorisieren Windows XP und Windows 2000 die DNS-Namensauflösung, während Windows NT die NetBIOS-Namensauflösung bevorzugt.
* Verwendete Protokolle: Die Art der verwendeten Protokolle kann ebenfalls die Reihenfolge der Namensauflösung beeinflussen. Wenn nur das IP-Protokoll verwendet wird, erfolgt die Namensauflösung in eine IP-Adresse ausschließlich über die DNS-Namensauflösung. Wenn NetBIOS over TCP/IP verwendet wird, können sowohl die NetBIOS- als auch die DNS-Namensauflösung verwendet werden.
* Konfigurationsdateien und Optionen: Die Reihenfolge der Namensauflösung kann auch durch Konfigurationsdateien und Optionen festgelegt werden. Zum Beispiel legt bei UNIX-artigen Systemen die Datei "/etc/nsswitch.conf" (oder "/etc/netsvc.conf" bei AIX) die Reihenfolge fest. Samba- und Samba-TNG-Server bieten die Option "name resolve order" zur Anpassung der Prioritäten. In Windows kann die Reihenfolge seit Windows NT 3.5 unter dem Registry-Key "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\ServiceProvider" eingestellt werden. Hierbei gilt: Eine niedrige Zahl bedeutet eine höhere Priorität. Standardmäßig unter Windows 7 ist die Reihenfolge 1. lokaler Name, 2. Einträge in der "hosts"-Datei, 3. DNS und 4. NetBIOS.