Funktionsweise von DNS-Abfragen
Wenn ein DNS-Cient nach einem Namen sucht, der in einem Programm verwendet wird, führt er zum Auflösen des Namens eine Abfrage der DNS-Server durch. Jede vom Client gesendete Abfragemeldung enthält drei Informationen, mit denen eine Frage an den Server festgelegt wird:
-
Einen festgelegten DNS-Domänennamen, der als voll qualifizierter Domänenname (fully qualified domain name, FQDN) angegeben ist.
-
Einen festgelegten Abfragetyp, über den entweder ein Ressourceneintrag nach Typ oder eine festgelegte Art von Abfragevorgang angegeben wird.
-
Eine festgelegte Klasse für den DNS-Domänennamen.
Für DNS-Server unter Windows sollte diese Klasse immer als Internetklasse (IN-Klasse) angegeben werden.
Bei dem angegebenen Namen kann es sich z. B. um den FQDN für einen Computer handeln, etwa host-a.beispiel.microsoft.com., und der Abfragetyp wird so festgelegt, dass über diesen Namen nach einem A-Ressourceneintrag (Adresse) gesucht wird. Eine DNS-Abfrage ist im Grunde eine zweiteilige Frage des Clients an den Server, z. B. "Bestehen A-Ressourceneinträge für einen Computer namens hostname.beispiel.microsoft.com.?" Wenn der Client eine Antwort vom Server empfängt, liest er den zurückgegebenen A-Ressourceneintrag, wertet ihn aus und erhält auf diese Weise die IP-Adresse des Computers, den er per Namen abgefragt hatte.
Auflösungen werden mit DNS-Abfragen auf unterschiedliche Arten durchgeführt. Ein Client kann eine Abfrage ggf. lokal beantworten, indem er zwischengespeicherte Daten aus einer vorherigen Abfrage verwendet. Der DNS-Server kann zum Beantworten einer Abfrage eigene zwischengespeicherte Ressourceneintragsdaten verwenden. Um dem anfragenden Client eine vollständige Namensauflösung zu ermöglichen, kann ein DNS-Server auch andere DNS-Server kontaktieren oder abfragen und dann eine Antwort zurück an den Client senden. Dieser Vorgang wird als Rekursion bezeichnet.
Darüber hinaus kann auch der Client selbst versuchen, eine Verbindung zu weiteren DNS-Servern herzustellen, um einen Namen aufzulösen. In einem solchen Fall verwendet der Client zusätzliche eigene Abfragen, die auf den Referenzantworten von Servern basieren. Dieser Vorgang wird als Iteration bezeichnet.
Im Allgemeinen wird ein DNS-Abfragevorgang in zwei Schritten durchgeführt:
-
Auf einem Clientcomputer wird eine Namensabfrage gestartet und zum Auflösen an einen Auflösungsdienst, den DNS-Clientdienst, weitergeleitet.
-
Wenn die Abfrage nicht lokal aufgelöst werden kann, können nach Bedarf DNS-Server zum Auflösen des Namens abgefragt werden.
Diese beiden Vorgänge werden in den folgenden Abschnitten näher erläutert.
Teil 1: Die lokale Auflösung
In der folgenden Abbildung wird eine Übersicht über den gesamten DNS-Abfrageprozess dargestellt.
.gif)
Wie aus den ersten Schritten des Abfrageprozesses zu ersehen ist, wird in einem Programm auf dem lokalen Computer ein DNS-Domänenname verwendet. Die Abfrage wird dann an den DNS-Clientdienst weitergeleitet, um eine Auflösung mithilfe lokal zwischengespeicherter Daten durchzuführen. Wenn der abgefragte Name aufgelöst werden kann, wird die Abfrage beantwortet, und der Prozess ist abgeschlossen.
Der lokale Auflösungscache kann Namensdaten enthalten, die aus zwei möglichen Quellen stammen:
-
Wenn eine Hostdatei lokal konfiguriert wurde, werden beim Starten des DNS-Clientdienstes alle Zuordnungen von Namen zu Adressen aus dieser Datei in den Cache geladen.
-
Ressourceneinträge, die in Antworten aus vorherigen DNS-Abfragen enthalten sind, werden dem Cache hinzugefügt und für eine bestimmte Zeit gespeichert.
Wenn für die Abfrage kein passender Eintrag im Cache vorhanden ist, wird der Auflösungsprozess fortgesetzt, indem der Client zum Auflösen des Namens einen DNS-Server abfragt.
Teil 2: Abfragen eines DNS-Servers
Wie aus der obigen Abbildung hervorgeht, fragt der Client einen bevorzugten DNS-Server ab. Der zu Anfang des Client/Server-Abfrageprozesses verwendete Server wird aus einer globalen Liste ausgewählt. Weitere Informationen darüber, wie diese globale Liste kompiliert und aktualisiert wird, finden Sie unter Clientfunktionen.
Wenn ein DNS-Server eine Abfrage empfängt, überprüft er zunächst, ob er die Abfrage auf der Grundlage von Ressourceneintragsdaten, die in einer lokal konfigurierten Zone auf dem Server enthalten sind, autorisierend beantworten kann. Entspricht der abgefragte Name einem entsprechenden Ressourceneintrag in den lokalen Zonendaten, antwortet der Server autorisierend, indem er diese Daten zum Auflösen des abgefragten Namens verwendet.
Stehen für den abgefragten Namen keine Zonendaten zur Verfügung, überprüft der Server als Nächstes, ob er den Namen mithilfe lokal zwischengespeicherter Daten aus vorherigen Abfragen auflösen kann. Wird hier eine Entsprechung gefunden, antwortet der Server mit diesen Daten. Auch in diesem Fall ist die Abfrage abgeschlossen, wenn der bevorzugte Server mit einer entsprechenden Antwort aus dem Cache auf den anfragenden Client reagieren kann.
Wird auf dem bevorzugten Server weder in den Daten des Caches noch in den Zonendaten eine entsprechende Antwort für den abgefragten Namen gefunden, kann der Abfragevorgang fortgesetzt werden, indem der Name mit einem Rekursionsprozess vollständig aufgelöst wird. Für diese Art der Namensauflösung werden weitere DNS-Server zur Unterstützung herangezogen. Standardmäßig wird der Server vom DNS-Clientdienst aufgefordert, einen Rekursionsprozess zu verwenden, um vor dem Antworten die Namen für den Client vollständig aufzulösen. Die in den meisten Fällen verwendete Standardkonfiguration des DNS-Servers für die Unterstützung des Rekursionsprozesses ist in der folgenden Abbildung dargestellt.
.gif)
Damit der DNS-Server die Rekursion ordnungsgemäß ausführen kann, benötigt er zunächst unterstützende Kontaktinformationen über andere DNS-Server im DNS-Domänennamespace. Diese Daten stehen in Form von Stammhinweisen zur Verfügung. Dies ist eine Liste vorläufiger Ressourceneinträge, die vom DNS-Dienst für die Suche nach anderen DNS-Servern verwendet werden kann, die für den Stamm der DNS-Domänennamespacestruktur autorisierend sind. Stammserver sind autorisierend für den Domänenstamm und die Domänen der obersten Ebene in der Namespacestruktur der DNS-Domäne. Weitere Informationen finden Sie unter Aktualisieren von Stammhinweisen.
Mithilfe der Stammhinweise für die Suche nach Stammservern kann ein DNS-Server den Rekursionsvorgang abschließen. Theoretisch ermöglicht dieser Prozess jedem DNS-Server die Suche nach autorisierenden Servern für alle anderen DNS-Domänennamen, die auf einer beliebigen Ebene der Namespacestruktur verwendet werden.
Angenommen, ein Client fragt einen einzelnen DNS-Server nach dem Namen host-b.beispiel.microsoft.com ab, und für die Suche wird der Rekursionsprozess verwendet. Dieser Prozess wird dann aktiviert, wenn ein DNS-Server und ein Client gestartet werden und keine lokal zwischengespeicherten Daten zum Auflösen der Namensabfrage zur Verfügung stehen. Es wird davon ausgegangen, dass sich der über den Client abgefragte Name auf einen Domänennamen bezieht, für den auf dem Server in den konfigurierten Zonen keine Daten zur Verfügung stehen.
Zunächst analysiert der bevorzugte Server den vollständigen Namen und stellt dann fest, dass für die Domäne der obersten Ebene, com, der Standort des autorisierenden Servers benötigt wird. Dann wird eine iterative Abfrage an den DNS-Server für com gesendet, um eine Referenz zu dem Server für microsoft.com anzufordern. Als Nächstes erhält der DNS-Server für beispiel.microsoft.com eine Referenzantwort vom Server für microsoft.com.
Schließlich wird eine Verbindung zu dem Server für beispiel.microsoft.com. hergestellt. Da dieser Server den abgefragten Namen als Teil der konfigurierten Zonen enthält, sendet er eine autorisierte Antwort an den ursprünglichen Server, von dem aus die Rekursion gestartet wurde. Wenn der ursprüngliche Server die Mitteilung empfängt, dass auf die angeforderte Abfrage eine autorisierte Antwort vorliegt, sendet er sie an den anfordernden Client weiter, und der rekursive Abfrageprozess ist abgeschlossen.
Obwohl der rekursive Abfrageprozess ressourcenintensiv sein kann, wenn er wie oben beschrieben durchgeführt wird, bietet er für den DNS-Server einige Leistungsvorteile. Während des Rekursionsprozesses erhält der DNS-Server, über den das rekursive Lookup durchgeführt wird, z. B. Informationen über den DNS-Domänennamespace. Diese Informationen werden vom Server zwischengespeichert und können erneut verwendet werden, um die Beantwortung entsprechender nachfolgender Abfragen zu beschleunigen. Im Laufe der Zeit kann die Menge der zwischengespeicherten Daten so zunehmen, dass ein beträchtlicher Teil der Serverspeicherressourcen verwendet wird, obwohl diese gelöscht werden, wenn der Abfragezyklus des DNS-Dienstes gestartet oder beendet wird.
Andere Abfrageantworten
Bei den vorangegangenen Erläuterungen von DNS-Abfragen wurde davon ausgegangen, dass der Prozess mit einer positiven Antwort an den Client abgeschlossen wird. Bei Abfragen können jedoch auch andere Antworten zurückgegeben werden. Es folgt eine Liste der häufigsten Antworten:
-
Autorisierende Antwort
-
Positive Antwort
-
Referenzantwort
-
Negative Antwort
Bei einer autorisierenden Antwort handelt es sich um eine positive Antwort an den Client, bei der das Autoritätsbit in der DNS-Meldung gesetzt ist. Auf diese Weise wird gekennzeichnet, dass die Antwort von einem Server empfangen wurde, der für den abgefragten Namen über direkte Autorität verfügt.
Eine positive Antwort kann aus dem abgefragten Ressourceneintrag oder einer Liste von Ressourceneinträgen (auch Ressourceneintragssatz genannt) bestehen, die dem abgefragten DNS-Domänennamen und dem in der Abfragemeldung angegebenen Eintragstyp entspricht.
Eine Referenzantwort enthält zusätzliche Ressourceneinträge, deren Namen oder Typen in der Abfrage nicht angegeben sind. Dieser Antworttyp wird an den Client zurückgegeben, wenn der Rekursionsprozess nicht unterstützt wird. Die Einträge stellen hilfreiche Referenzantworten dar, die der Client verwenden kann, um die Abfrage mithilfe eines Iterationsprozesses fortzusetzen.
Eine Referenzantwort umfasst weitere Daten, z. B. Ressourceneinträge, die von dem abgefragten Typ abweichen. Wenn der abgefragte Hostname z. B. www ist und für diesen Namen in dieser Zone keine A-Ressourceneinträge, aber ein CNAME-Ressourceneintrag für www gefunden wird, kann der DNS-Server diese Information in die Antwort an den Client einschließen.
Kann der Client die Iteration verwenden, so vermag er mithilfe der in der Referenzantwort enthaltenen Informationen selbst zusätzliche Abfragen durchführen, um den Namen vollständig aufzulösen.
Eine negative Antwort vom Server kann darauf hinweisen, dass eines von zwei möglichen Ergebnissen gefunden wurde, während der Server versuchte, die Abfrage vollständig und autorisierend zu verarbeiten und rekursiv aufzulösen:
-
Ein autorisierender Server meldet, dass der abgefragte Name im DNS-Namespace nicht vorhanden ist.
-
Ein autorisierender Server meldet, dass der abgefragte Name zwar existiert, für diesen Namen jedoch keine Einträge des angegebenen Typs vorhanden sind.
Vom Auflösungsdienst werden die Abfrageergebnisse in Form einer positiven oder negativen Antwort an das anfordernde Programm weitergeleitet und zwischengespeichert.
Hinweise
-
Ist die Antwort auf eine Abfrage so lang, dass sie nicht in einem einzelnen UDP-Nachrichtenpaket gesendet und aufgelöst werden kann, besteht für den DNS-Server die Möglichkeit, über den TCP-Port 53 eine Failoverantwort auszulösen und so in einer TCP-Sitzung eine vollständige Antwort an den Client zu senden.
-
Im Allgemeinen wird das Verwenden der Rekursion auf einem DNS-Server deaktiviert, wenn die Namensauflösung für DNS-Clients auf einen bestimmten DNS-Server beschränkt ist, z. B. auf einen DNS-Server in einem Intranet. Die Rekursion kann auch deaktiviert werden, wenn der DNS-Server keine externen DNS-Namen auflösen kann und Clients zum Auflösen dieser Namen ein Failover zu einem anderen DNS-Server durchführen sollen.
Sie können die Verwendung der Rekursion deaktivieren, indem Sie auf dem entsprechenden Server in der DNS-Konsole die Eigenschaften unter Erweitert konfigurieren. Weitere Informationen finden Sie unter Deaktivieren der Rekursion auf dem DNS-Server.
-
Wenn Sie die Rekursion auf dem DNS-Server deaktivieren, können Sie auf diesem Server keine Weiterleitungen verwenden.
-
Standardmäßig verwenden DNS-Server beim Durchführen einer rekursiven Abfrage und beim Herstellen einer Verbindung mit anderen DNS-Servern unterschiedliche Standardzeiten. Diese lauten wie folgt:
-
Ein Wiederholungsintervall für die Rekursion von 3 Sekunden. Hierbei handelt es sich um die Zeitspanne, die der DNS-Dienst abwartet, bevor eine Abfrage während eines rekursiven Lookups erneut durchgeführt wird.
-
Ein Zeitüberschreitungsintervall für die Rekursion von 15 Sekunden. Hierbei handelt es sich um die Zeitspanne, die der DNS-Dienst abwartet, bevor er ein erneut durchgeführtes rekursives Lookup als fehlgeschlagen betrachtet.
In den meisten Fällen brauchen diese Parameter nicht angepasst werden. Wenn rekursive Lookups jedoch über eine langsame WAN-Verbindung ausgeführt werden, können die Serverleistung und die Ausführung der Abfrage durch geringfügige Änderungen dieser Einstellungen verbessert werden. Weitere Informationen finden Sie unter Optimieren erweiterter Serverparameter.
Funktionsweise der Iteration
Bei einer Iteration handelt es sich um eine Art der Namensauflösung, die zwischen DNS-Clients und -Servern unter folgenden Bedingungen ausgeführt wird:
-
Der Client fordert das Verwenden der Rekursion an, aber die Rekursion ist auf dem DNS-Server deaktiviert.
-
Der Client fordert beim Abfragen des DNS-Servers das Verwenden der Rekursion nicht an.
Über eine iterative Abfrage informiert der Client den DNS-Server darüber, dass er von ihm die bestmögliche sofort verfügbare Antwort erwartet und keine Verbindung zu anderen DNS-Servern hergestellt werden soll.
Beim Verwenden der Iteration beantwortet ein DNS-Server eine Clientabfrage unter Berücksichtigung der abgefragten Namensdaten mit den eigenen Namespaceinformationen. Wenn ein DNS-Server im Intranet von einem lokalen Client z. B. die Abfrage nach www.microsoft.com empfängt, kann er die Antwort möglicherweise aus dem Namenscache zurückgeben. Ist der abgefragte Name im Namenscache des Servers aktuell nicht vorhanden, kann der Server mit einer Referenz antworten, d. h. einer Liste der NS- und A-Ressourceneinträge anderer DNS-Server, die dem abgefragten Namen am ehesten entsprechen.
Bei einer Referenzantwort übernimmt der DNS-Client die Verantwortung, zur Namensauflösung iterative Abfragen an andere konfigurierte DNS-Server zu senden. Zum Auffinden der DNS-Server, die für die Domäne com autorisierend sind, kann der DNS-Client die Suche z. B. bis zu den Stammdomänenservern im Internet ausweiten. Nachdem ein Kontakt zu den Internetstammservern hergestellt ist, kann der Client weitere iterative Antworten von den DNS-Servern empfangen, die auf die Internet-DNS-Server für die Domäne microsoft.com zeigen. Wenn dem Client Einträge für diese DNS-Server zur Verfügung stehen, kann er eine weitere iterative Abfrage an die externen Microsoft DNS-Server im Internet senden, die mit einer endgültigen und autorisierenden Antwort reagieren können.
Beim Verwenden der Iteration kann ein DNS-Server bei der Auflösung einer Namensabfrage Unterstützung bieten, die über das Senden der für ihn bestmöglichen Antwort an den Client hinausgeht. Bei den meisten iterativen Abfragen verwendet ein Client eine lokal konfigurierte Liste von DNS-Servern, um einen Kontakt zu anderen Namenservern im DNS-Namespace herzustellen, wenn die Abfrage vom primären DNS-Server nicht aufgelöst werden kann.
Funktionsweise des Zwischenspeicherns
Beim Verarbeiten von Clientabfragen mithilfe von Rekursion oder Iteration ermitteln DNS-Server umfangreiche Informationen zum DNS-Namespace. Diese Informationen werden dann vom Server zwischengespeichert.
Das Zwischenspeichern bietet eine Möglichkeit, die Leistung für DNS-Auflösungen bei nachfolgenden Abfragen bekannter Namen zu beschleunigen, wodurch der DNS-bezogene Netzwerkverkehr deutlich reduziert wird.
Beim Durchführen rekursiver Abfragen für Clients werden Ressourceneinträge von DNS-Servern vorübergehend zwischengespeichert. Zwischengespeicherte Ressourceneinträge enthalten empfangene Informationen von DNS-Servern, die für die DNS-Domänennamen autorisierend sind. Die Informationen stammen aus iterativen Abfragen und werden zum Suchen und vollständigen Beantworten rekursiver Abfragen für einen Client verwendet. Wenn andere Clients zu einem späteren Zeitpunkt in neuen Abfragen Ressourceneintragsinformationen anfordern, die den zwischengespeicherten Ressourceneinträgen entsprechen, können diese vom DNS-Server für eine Antwort verwendet werden.
Beim Zwischenspeichern von Informationen wird allen zwischengespeicherten Ressourceneinträgen ein Wert für die Gültigkeitsdauer (Time-To-Live, TTL) zugeordnet. Während der Gültigkeitsdauer eines zwischengespeicherten Ressourceneintrags bleibt dieser im Cache des DNS-Servers enthalten und kann weiterhin zum Beantworten von Clientabfragen verwendet werden, für die dieser Ressourceneintrag zutreffend ist. In den meisten Zonenkonfigurationen ist den von den Ressourceneinträgen verwendeten TTL-Werten der Wert Minimum TTL (Standard) zugewiesen, der im Ressourceneintrag für den Autoritätsursprung (Start of Authority, SOA) der Zone eingestellt ist. In der Standardeinstellung beträgt der Wert für Minimum TLL (Standard) 3.600 Sekunden (1 Stunde). Sie können diesen Wert jedoch ändern oder bei Bedarf für jeden Ressourceneintrag einen individuellen TTL-Wert für das Zwischenspeichern einstellen.
Hinweise
-
Sie können einen DNS-Server als Server für Zwischenspeicherungen installieren. Weitere Informationen finden Sie unter Verwenden von Servern für Zwischenspeicherungen.
-
Standardmäßig verwenden DNS-Server eine Datei für Stammhinweise (Cache.dns), die auf dem Servercomputer im Ordner systemroot\System32\Dns gespeichert ist. Der Inhalt dieser Datei wird beim Starten des Dienstes in den Serverspeicher geladen. Sie enthält Zeigerinformationen zu Stammservern für den DNS-Namespace, in dem DNS-Server ausgeführt werden. Weitere Informationen zu dieser Datei und zu ihrer Verwendung finden Sie unter DNS-Dateien .