Delen via


DNS-queries en zoekopdrachten

Dit artikel bevat een overzicht van het DNS-queryproces (Domain Name System) en hoe DNS-servers query's omzetten. Ook wordt uitgelegd hoe DNS-servers gebruikmaken van recursie en iteratie om query's op te lossen.

Hoe DNS-query's werken

Wanneer een DNS-client een naam moet opzoeken, wordt er een query uitgevoerd op DNS-servers om de naam op te lossen. Elk querybericht dat de client verzendt, bevat drie stukjes informatie, waarbij een vraag wordt opgegeven voor de server die moet worden beantwoord:

  • Een opgegeven DNS-domeinnaam, vermeld als een FQDN (Fully Qualified Domain Name).
  • Een gespecificeerd querytype, dat een resourcerecord (RR) kan specificeren op basis van type of een gespecialiseerde soort querybewerking.
  • Een opgegeven klasse voor de DNS-domeinnaam. Voor DNS-servers waarop het Windows-besturingssysteem wordt uitgevoerd, moet deze klasse altijd worden opgegeven als de internetklasse (IN).

De opgegeven naam kan bijvoorbeeld de FQDN voor een computer zijn, zoals host-a.example.contoso.com., en het querytype dat is opgegeven om te zoeken naar een adres (A) RR met die naam. U kunt een DNS-query beschouwen als een client die een tweedelige vraag stelt aan een server, zoals 'Hebt u een bronrecord voor een computer met de naam hostname.example.contoso.com.?' Wanneer de client een antwoord van de server ontvangt, leest en interpreteert de client het antwoord A RR en leert het IP-adres van de computer die wordt gevraagd op naam.

In de volgende tabel worden veelvoorkomende DNS-querytypen en bijbehorende id's beschreven.

Typ ID-kaart
A 1
AAAA 28
SOA 6
SRV 33

DNS-queries worden op veel verschillende manieren opgelost. Een client kan soms een query lokaal beantwoorden met behulp van gegevens in de cache die zijn verkregen uit een vorige query. De DNS-server kan een eigen cache van bronrecordgegevens gebruiken om een query te beantwoorden. Een DNS-server kan ook namens de client een query uitvoeren op andere DNS-servers. Dit proces wordt recursie genoemd. De server lost de naam op en stuurt vervolgens een antwoord terug naar de client.

Daarnaast kan de client zelf proberen contact op te maken met andere DNS-servers om een naam op te lossen. Wanneer een client dit doet, worden afzonderlijke query's gebruikt op basis van verwijzingsantwoorden van servers. Dit proces wordt iteratie genoemd.

Over het algemeen vindt het DNS-queryproces plaats in twee delen:

  • Een naamquery begint op een clientcomputer en wordt doorgegeven aan een resolver, de DNS-clientservice, voor omzetting.
  • Wanneer de query niet lokaal kan worden opgelost, kunnen DNS-servers opgevraagd worden indien nodig om de naam op te lossen.

Elk proces wordt in dit artikel uitgebreider uitgelegd.

Hoe iteratie werkt

Iteratie is het type naamomzetting dat wordt gebruikt tussen DNS-clients en servers wanneer de volgende voorwaarden van kracht zijn:

  • De client vraagt het gebruik van recursie aan, maar recursie is uitgeschakeld op de DNS-server.
  • De client vraagt het gebruik van recursie niet aan bij het uitvoeren van query's op de DNS-server.

Een iteratieve aanvraag van een client vertelt de DNS-server dat de client het beste antwoord verwacht dat de DNS-server onmiddellijk kan bieden, zonder contact op te maken met andere DNS-servers.

Wanneer iteratie wordt gebruikt, beantwoordt een DNS-server een client op basis van zijn eigen specifieke kennis over de naamruimte met betrekking tot de namen waarop een query wordt uitgevoerd. Als een DNS-server op uw intranet bijvoorbeeld een query ontvangt van een lokale client voor www.contoso.com, kan er een antwoord worden geretourneerd uit de cache met namen. Als de opgevraagde naam momenteel niet is opgeslagen in de namencache van de server, reageert de server mogelijk door een verwijzing op te geven. Een verwijzing is een lijst met NS en A RR's voor andere DNS-servers die dichter bij de naam liggen die door de client wordt opgevraagd.

Wanneer iteratie wordt gebruikt, kan een DNS-server bijdragen aan de naamqueryresolutie, meer dan alleen door zijn eigen beste antwoord terug te geven aan de client. Voor de meeste iteratieve query's gebruikt een client de lokaal geconfigureerde lijst met DNS-servers om contact op te maken met andere naamservers in de DNS-naamruimte als de primaire DNS-server de query niet kan omzetten.

De Windows DNS Client-service voert geen recursie uit.

Hoe caching werkt

Als DNS-servers clientquery's verwerken met behulp van recursie of iteratie, detecteren en verkrijgen ze een aanzienlijk archief met informatie over de DNS-naamruimte. De server slaat deze gegevens vervolgens in de cache op.

Caching biedt een manier om de prestaties van DNS-omzetting te versnellen voor volgende query's van populaire namen, terwijl DNS-gerelateerd queryverkeer in het netwerk aanzienlijk wordt verminderd.

Omdat DNS-servers recursieve query's namens clients maken, worden bronrecords tijdelijk in de cache opgeslagen. Bronrecords in de cache bevatten informatie die is verkregen van DNS-servers. Deze servers zijn gezaghebbend voor DNS-domeinnamen. Deze informatie wordt geleerd tijdens het maken van iteratieve query's. Deze query's helpen bij het volledig beantwoorden van een recursieve query die wordt uitgevoerd namens een client. Wanneer andere clients later nieuwe query's plaatsen die bronrecordgegevens aanvragen die overeenkomen met records in de cache, kan de DNS-server de gegevens in de cache gebruiken om deze te beantwoorden.

Wanneer gegevens in de cache worden opgeslagen, is een TTL-waarde (Time-To-Live) van toepassing op alle records in de cache. Zolang de TTL voor een bronrecord in de cache niet verloopt, kan een DNS-server de cache blijven opslaan. Het kan de resourcerecord in de cache opnieuw gebruiken bij het beantwoorden van query's van de clients die overeenkomen met deze records. Het cachen van TTL-waarden die worden gebruikt door resource records, krijgt in de meeste zoneconfiguraties de minimale (standaard) TTL toegewezen, die is ingesteld in de resourcerecord van de Start of Authority (SOA) van de zone. De minimale TTL is standaard 3600 seconden (één uur), maar kan worden aangepast of, indien nodig, afzonderlijke TTL's voor caching worden ingesteld op elke resourcerecord.

Notitie

De DNS Server-service maakt standaard gebruik van een root hints-bestand, cache.dns, dat is opgeslagen in de map <systemroot>\System32\Dns op de server. Dit bestand bevat de NS- en A-bronrecords voor de hoofdservers van de DNS-naamruimte (de internethoofdservers of intranethoofdservers). Wanneer de DNS Server-service wordt gestart, wordt de lijst met hoofdservers opgevraagd voor een huidige lijst met alle hoofdservers. De resultaten van de query worden gebruikt om het bestand met hoofdtips bij te werken. Deze bewerking wordt ook periodiek uitgevoerd terwijl de service actief is. Wanneer een beheerder wijzigingen aanbrengt in de root hints, worden deze wijzigingen teruggeschreven naar het root hints-bestand.

DNS-clientserviceomzetter

Wanneer een DNS-domeinnaam wordt gebruikt in een programma op de lokale computer, wordt de aanvraag vervolgens doorgegeven aan de DNS-clientservice voor omzetting die eerst gegevens in de lokale cache controleert. Als de opgevraagde naam kan worden omgezet, wordt de query beantwoord en wordt het proces voltooid.

In het volgende diagram ziet u een eenvoudig voorbeeld van een DNS-client die een query uitvoert op de DNS-clientservice voor een naamomzetting.

Een diagram met een eenvoudig voorbeeld van een DNS-client die een query uitvoert op de DNS-clientservice voor een naamomzetting.

De lokale resolver-cache kan naamgegevens bevatten die zijn verkregen uit twee mogelijke bronnen:

  • Als een hosts-bestand lokaal is geconfigureerd, worden alle hostnaam-naar-adrestoewijzingen van dat bestand in de cache geladen wanneer de DNS-clientservice wordt gestart.

  • Bronrecords die zijn verkregen in antwoorden van eerdere DNS-query's, worden toegevoegd aan de cache en bewaard gedurende een tijd die wordt bepaald door de time-to-live (TTL).

Als de query niet overeenkomt met een vermelding in de cache, gaat het omzettingsproces verder waarbij de client een DNS-server raadpleegt om de naam op te lossen.

In het volgende diagram ziet u de DNS-clientservice die de cache voor een DNS-query controleert.

een diagram waarin de DNS-clientservice de cache voor een DNS-query controleert.

Het configureren van DNS-clients met meer dan één DNS-server-IP voegt fouttolerantie toe aan uw DNS-infrastructuur. Door meerdere IP-adressen van DNS-servers toe te voegen, kunnen DNS-namen nog steeds worden omgezet als de primaire DNS-server, de netwerkkoppeling of de ondersteunende infrastructuur mislukt.

Naamfouten kunnen ertoe leiden dat toepassingen of onderdelen vastlopen, resourcestoringen die wachten op verlopen afhankelijke time-outs die direct of indirect operationele fouten veroorzaken. Zie time-outs voor DNS-clientomzetting voor meer gedetailleerde informatie over alle mogelijke scenario's.

Daarom raden we u aan een Windows-client met meer dan één DNS-server te configureren. Het Windows-client-resolutieproces varieert afhankelijk van het aantal geconfigureerde DNS-servers.

DNS-server queryproces

Wanneer de DNS-server een query ontvangt, wordt eerst gecontroleerd of deze de query gezaghebbend kan beantwoorden. De DNS-server controleert met behulp van bronrecordgegevens die zijn opgenomen in een lokaal geconfigureerde zone op de server.

Als de opgevraagde naam overeenkomt met een overeenkomende RR in de gegevens van de lokale zone, antwoordt de server gezaghebbend op basis van deze informatie om de naam van de query op te lossen.

Als er geen zone-informatie bestaat voor de naam van de query, controleert de server of deze de naam kan omzetten met behulp van lokaal in de cache opgeslagen gegevens uit eerdere query's. Indien hier een match wordt gevonden, antwoordt de server met deze informatie. Als de voorkeursserver antwoord kan geven met een positief overeenkomend antwoord van de cache naar de aanvragende client, wordt de query voltooid.

Als de opgevraagde naam geen overeenkomend antwoord vindt op de voorkeursserver, hetzij vanuit de cache- of zonegegevens, kan het queryproces doorgaan met het gebruik van recursie om de naam volledig op te lossen. Dit proces omvat hulp van andere DNS-servers om de naam op te lossen. De DNS-clientservice vraagt de server standaard om een proces van recursie te gebruiken om namen volledig op te lossen namens de client voordat een antwoord wordt geretourneerd.

Om ervoor te zorgen dat de DNS-server recursie correct uitvoert, heeft het eerst nuttige contactgegevens nodig over andere DNS-servers in de DNS-domeinnaamruimte. Deze informatie wordt verstrekt als basishints. Root hints zijn een lijst met primaire bronrecords. De DNS-service gebruikt deze records om andere DNS-servers te vinden die gezaghebbend zijn voor de wortel van de DNS-domeinnaamruimte. Hoofdservers zijn gezaghebbend voor de domeinhoofd- en topniveaudomeinen in de structuur van de DNS-domeinnaamruimte.

Door basishints te gebruiken om hoofdservers te vinden, kan een DNS-server het gebruik van recursie voltooien. In theorie stelt dit proces elke DNS-server in staat om de servers te vinden die gezaghebbend zijn voor elke andere DNS-domeinnaam die op elk niveau in de naamruimtestructuur wordt gebruikt.

In de volgende stappen wordt het proces voor het uitvoeren van query's op een DNS-server beschreven:

  1. Als de query een FQDN (Fully Qualified Domain Name) is, wat betekent dat deze eindigt op een afsluitpunt (.), wordt de query verzonden naar de DNS-server. Bijvoorbeeld www.contoso.com.

  2. Als de query een niet-gekwalificeerde query met meerdere labels is, wat betekent dat deze niet eindigt op een afsluitpunt (.), verzendt de DNS-client deze naar de DNS-server met een afsluitpunt (.). Bijvoorbeeld www.contoso.com.

  3. Als de niet-gekwalificeerde query met één label is, zoals www. Vervolgens verschilt het gedrag op basis van de DNS-instellingen op de NIC.

  4. Als er een zoeklijst voor DNS-achtervoegsels is, voegt de DNS-clientservice deze toe in volgorde van eerste tot laatste aan de query met één label en verzendt de query met beëindigde punt (.) naar de DNS-server. Dit proces is een herhaald proces totdat alle zoeklijst met DNS-achtervoegsels wordt gebruikt.

  5. Als er geen zoeklijst voor DNS-achtervoegsels is geconfigureerd, voegt de DNS-clientservice het primaire DNS-achtervoegsel toe aan de query met één label met beëindigde punt (.) en verzendt deze naar de DNS-server.

    Wanneer de DNS-client is geconfigureerd om de devolution van de naam uit te voeren, wordt het primaire DNS-achtervoegsel gedevoleerd en wordt een andere query verzonden met een afsluitpunt (.) als het primaire DNS-achtervoegsel mislukt. Als bijvoorbeeld het oplossen van www.test.contoso.com mislukt, valt de client terug op www.contoso.com.

  6. Als er een verbindingsspecifiek DNS-achtervoegsel is geconfigureerd op de adapters, wordt de query toegevoegd met een beëindigde punt (.) en verzonden naar de DNS-server.

In alle gevallen wordt het antwoord opgeslagen in de DNS-clientcache, ongeacht of het antwoord positief of negatief is.

Het volgende stroomdiagram illustreert het beschreven proces voor het uitvoeren van query's op een DNS-server.

een stroomdiagram waarin het proces voor het uitvoeren van query's op een DNS-server wordt geïllustreerd.

DNS-recursie

Overweeg het gebruik van het recursieproces om de naam host-b.example.contoso.com. te vinden wanneer de client een query uitvoert op één DNS-server. Het proces vindt plaats wanneer een DNS-server en -client voor het eerst worden gestart en er geen lokaal in de cache opgeslagen gegevens beschikbaar zijn om een naamquery op te lossen. Hierbij wordt ervan uitgegaan dat de naam die door de client wordt opgevraagd, is voor een domeinnaam waarvan de server geen lokale kennis heeft, op basis van de geconfigureerde zones.

De voorkeursserver parseert eerst de volledige naam en bepaalt dat deze de locatie nodig heeft van de server die gezaghebbend is voor het domein op het hoogste niveau, com. Vervolgens wordt een iteratieve query gebruikt voor de com DNS-server om een verwijzing naar de contoso.com-server te verkrijgen. Vervolgens komt een verwijzingsantwoord van de contoso.com-server naar de DNS-server voor example.contoso.com.

Ten slotte wordt er contact gemaakt met de example.contoso.com.-server. Omdat deze server de opgevraagde naam bevat als onderdeel van de geconfigureerde zones, reageert deze gezaghebbend terug op de oorspronkelijke server die recursie heeft gestart. Wanneer de oorspronkelijke server het antwoord ontvangt, wordt gecontroleerd of het antwoord gezaghebbend is. Als dat zo is, stuurt de server dit antwoord terug naar de aanvragende client, waarbij het recursieve queryproces wordt voltooid.

Hoewel het recursieve queryproces resource-intensief kan zijn wanneer dit wordt uitgevoerd zoals beschreven, heeft het een aantal prestatievoordelen voor de DNS-server. Tijdens het recursieproces verkrijgt de DNS-server die de recursieve zoekactie uitvoert bijvoorbeeld informatie over de DNS-domeinnaamruimte. De server slaat de informatie in de cache op, die opnieuw kan worden gebruikt om het beantwoorden van volgende query's die deze gebruiken of matchen, te versnellen. Na verloop van tijd kan deze informatie in de cache toenemen tot een aanzienlijk deel van de servergeheugenbronnen. De cache wordt gewist wanneer de DNS-service opnieuw wordt opgestart.

Adaptieve time-out voor DNS-vragen

Met de functie adaptieve time-out voor DNS-query's kan de time-out voor DNS-query's worden aangepast op basis van de tijd die nodig is voor eerdere query's, waardoor de time-out voor de meeste query's wordt verminderd. Time-outs kunnen ook worden verhoogd voor verbindingen met hoge latentie, zoals satellietverbindingen. Windows Store-apps kunnen de configuratie van DNS-time-outs per netwerkinterface optimaliseren.

In plaats van te wachten op 1000 ms voordat er een time-out optreedt voor een DNS-query, wordt de eerste time-out aangepast om tussen 25 ms en 1000 ms te zijn, op basis van eerdere prestaties van het netwerk.

Dns-server reageert niet-reagerende cache

Niet-reagerende DNS-servers worden in de cache opgeslagen en worden periodiek opnieuw geprobeerd. Dankzij deze buitengebruikstelling kan de DNS-client de best beschikbare server consistent gebruiken en minder tijd besteden aan het wachten op niet-reagerende DNS-servers.

In de volgende afbeelding ziet u een voorbeeld van dns-clientquery's op elke server op elke adapter met behulp van het proces in deze sectie.

Diagram met de query's voor multihomed naamomzetting voor DNS voor elke server op elke adapter.

De DNS-clientservice voert een query uit op de DNS-servers in de volgende volgorde:

  1. De DNS-clientservice verzendt de naamquery naar de eerste DNS-server in de lijst met DNS-servers van de voorkeursadapter en wacht één seconde voor een antwoord.

  2. Als de DNS-clientservice binnen één seconde geen antwoord van de eerste DNS-server ontvangt, wordt de naamquery verzonden naar de eerste DNS-servers op alle adapters die nog in overweging zijn en wacht twee seconden voor een antwoord.

  3. Als de DNS-clientservice binnen twee seconden geen antwoord van een DNS-server ontvangt, wordt de query verzonden naar alle DNS-servers op alle adapters die nog in overweging zijn. De DNS-clientservice wacht vervolgens nog eens twee seconden voor een antwoord.

  4. Als de DNS-clientservice nog steeds geen antwoord van een DNS-server ontvangt, wordt de naamquery verzonden naar alle DNS-servers op alle adapters die nog in overweging zijn en wacht vier seconden voor een antwoord.

  5. Als de DNS-clientservice geen antwoord van een DNS-server ontvangt, verzendt de DNS-client de query naar alle DNS-servers op alle adapters die nog in overweging zijn en wacht acht seconden voor een antwoord.

  6. Als de DNS-clientservice binnen acht seconden geen antwoord van een server ontvangt, reageert de DNS-clientservice met een time-out. Als de DNS-clientservice geen antwoord ontvangt van een DNS-server op een specifieke adapter, treedt er een time-out op van alle query's naar die servers gedurende de komende 30 seconden op die adapter.

  7. Als de DNS-clientdienst op enig moment een negatieve reactie van een server ontvangt, wordt elke server op die adapter tijdens deze zoekopdracht buiten beschouwing gelaten. Als de eerste server op Alternatieve adapter A bijvoorbeeld een negatief antwoord geeft in stap 2, voert de DNS-clientservice geen query's uit op een andere server in de lijst voor alternatieve adapter A.

  8. Als de DNS-clientservice een positief antwoord ontvangt, wordt er geen query meer uitgevoerd op de naam, wordt het antwoord aan de cache toegevoegd en wordt het antwoord naar de client geretourneerd.

De DNS-clientservice houdt bij welke servers sneller antwoorden op naamquery's en verplaatst de servers omhoog of omlaag in de lijst op basis van hoe snel ze reageren op naamquery's.

Alternatieve queryantwoorden

Bij de voorgaande beschrijving van DNS-query's wordt ervan uitgegaan dat het proces eindigt met een positief antwoord dat wordt geretourneerd aan de client. Query's kunnen echter ook andere antwoorden retourneren. Hier volgen de meest voorkomende queryantwoorden:

  • Een gezaghebbend antwoord
  • Een positief antwoord
  • Een verwijzingsantwoord
  • Een negatief antwoord

Een gezaghebbend antwoord is een positief antwoord van een DNS-server die directe autoriteit heeft over de naam van de query. Dit antwoord bevat de instantie-bit die is ingesteld in het DNS-bericht om de echtheid ervan aan te geven.

Een positief antwoord kan bestaan uit de opgevraagde RR of een lijst met RR's (ook wel bekend als een RR-set) die past bij de opgevraagde DNS-domeinnaam en het recordtype dat is opgegeven in het querybericht.

Een verwijzingsantwoord bevat andere RR's die niet zijn opgegeven met de naam of het type in de query. Dit type antwoord wordt geretourneerd aan de client als het recursieproces niet wordt ondersteund. De records zijn bedoeld om te fungeren als nuttige referentieantwoorden die de client kan gebruiken om de query voort te zetten met behulp van iteratie. Een verwijzingsantwoord bevat meer gegevens, zoals resource records (RR's) van een ander type dan opgevraagd. Als de DNS-server bijvoorbeeld geen A RR's vindt voor de opgevraagde hostnaam www in deze zone, maar in plaats daarvan een CNAME-RR voor www vindt, kan deze informatie bevatten in de reactie op de client. Als de client iteratie kan gebruiken, kunnen er meer query's worden uitgevoerd met behulp van de verwijzingsgegevens in een poging om de naam voor zichzelf volledig op te lossen.

Een negatief antwoord van de server kan duiden op een van de twee mogelijke resultaten:

  • De gezaghebbende server kan de opgevraagde naam niet vinden in de DNS-naamruimte.
  • De gezaghebbende server heeft de opgevraagde naam gevonden, maar er bestaan geen records van het opgegeven type voor die naam.

De resolver verwerkt de query en retourneert de resultaten naar het aanvraagprogramma. Het antwoord kan positief of negatief zijn. Daarnaast slaat de resolver het antwoord op in de cache voor toekomstig gebruik.

Als het resulterende antwoord op een query te lang is om te worden verzonden en omgezet in één UDP-berichtpakket, kan de DNS-server een failover-antwoord starten via TCP-poort 53 om de client volledig te beantwoorden in een TCP-verbonden sessie.

Het gebruik van recursie op een DNS-server wordt uitgeschakeld wanneer DNS-clients worden beperkt tot het omzetten van namen naar een specifieke DNS-server, zoals die zich op uw intranet bevindt. Recursie kan ook worden uitgeschakeld wanneer de DNS-server geen externe DNS-namen kan omzetten. In dit geval wordt van clients verwacht dat ze overschakelen naar een andere DNS-server voor naamresolutie. Als u recursie op de DNS-server uitschakelt, kunt u geen doorstuurservers op dezelfde server gebruiken.

DNS-servers gebruiken standaard verschillende standaardtijdsinstellingen bij het uitvoeren van een recursieve query en het contact opnemen met andere DNS-servers. Deze standaardwaarden zijn onder andere:

  • Een herhalingsinterval van 3 seconden. Dit interval is de tijdsduur die de DNS-service wacht voordat een query opnieuw wordt uitgevoerd tijdens een recursieve zoekopdracht.
  • Een time-outinterval voor recursie van 8 seconden. Dit interval is de tijdsduur die de DNS-service wacht voordat een recursieve zoekactie mislukt die opnieuw is geprobeerd.

In de meeste gevallen hebben deze parameters geen aanpassing nodig. Als u echter recursieve zoekacties gebruikt via een WAN-koppeling (Slow-Speed Wide Area Network), kunt u de serverprestaties en queryvoltooiing mogelijk verbeteren door kleine aanpassingen aan te brengen in de instellingen.

Zie Omgekeerde Zoekopdrachtvoor meer informatie over het proces voor omgekeerde zoekopdracht.