Resolving

Als resolving bezeichnet man den Vorgang der Namensauflösung in einem Netzwerk. Der DNS-Client (resolver) führt hierbei die geforderte Anfrage an den im Betriebssystem eingestellten Nameserver aus.

Ports und Protokolle
Das DNS ist auf der Anwendungsschicht des OSI-Schichtenmodells angeordnet. Deshalb nutzt es zur Übertragung das TCP und UDP Protokoll. Für normale DNS-Anfragen verwendet der Resolver das UDP-Protokoll. Wenn die Antwort größer als 512 Byte ist, werden nur 512 Byte übertragen. Anschließend muss der Resolver seine Anfrage nochmal über TCP wiederholen, damit die Antwort in mehrere Segmente aufgeteilt werden kann.
Der Datenaustausch zwischen dem Primary und Secondary DNS-Server (z.B. für komplette Zonentransfers) wird ausschließlich über das TCP-Protokoll ausgeführt.
Jeder Nameserver nimmt auf dem Port 53 die Anfragen entgegen.

Abfragetypen
Bei der DNS-Auflösung unterscheidet man zwischen 2 verschiedenen Anfragetypen.

Rekursion:
Die Rekursive Abfrage ist die häufigste und für den Resolver die einfachste Art der Namensauflösung. Er übergibt diese Aufgabe komplett an den angesprochenen DNS-Server. Wenn dieser die DNS-Anfrage nicht auflösen kann, fragt er selber so lange bei weiteren DNS-Servern nach, bis die Antwort zurückgeliefert werden kann. Der Resolver übergibt die Antwort dann an das Anwendungsprogramm.

Iteration:
Die Iterative Abfrage an den angesprochenen DNS-Server liefert nur die Adresse des nächsten abzufragenden DNS-Servers zurück. Der Resolver muss sich dann selber um die weiteren Anfragen kümmern, bis der Domain-Name vollständig aufgelöst ist. Z.B. werden Root-Nameserver nur iterativ abgefragt.

Beispiel
In diesem Beispiel wird der typische Ablauf einer DNS-Anfrage beschrieben.
Der Browser soll die Webseite www.mustermann.de anzeigen und benötigt dafür die IP-Adresse des zuständigen Webservers.
Der Resolver muss somit einen Forward-Lookup für die IP-Adresse des Hostnamens www.mustermann.de (A-Record) ausführen.


dns-namensaufloesung.png
DNS Namensauflösung in der Praxis