Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo offre una panoramica del processo di query DNS (Domain Name System) e del modo in cui i server DNS risolvono le query. Spiega anche in che modo i server DNS usano la ricorsione e l'iterazione per risolvere le query.
Funzionamento delle query DNS
Quando un client DNS deve cercare un nome, esegue una query sui server DNS per risolvere il nome. Ogni messaggio di query inviato dal client contiene tre informazioni, specificando una domanda per il server a cui rispondere:
- Nome di dominio DNS specificato, indicato come nome di dominio completo (FQDN).
- Un tipo di query specificato, che può definire un record di risorsa (RR) per tipo o un tipo specializzato di operazione di query.
- Classe specificata per il nome di dominio DNS. Per i server DNS che eseguono il sistema operativo Windows, questa classe deve essere sempre specificata come classe Internet (IN).
Ad esempio, il nome specificato potrebbe essere il nome di dominio completo per un computer, ad esempio host-a.example.contoso.com., e il tipo di query specificato per cercare un indirizzo (A) RR in base a tale nome. Si pensi a una query DNS come a un client che pone una domanda al server in due parti, ad esempio "Hai dei record di risorse A per un computer denominato hostname.example.contoso.com.?" Quando il client riceve una risposta dal server, legge e interpreta la risposta RR A, imparando l'indirizzo IP per il computer richiesto per nome.
La tabella seguente descrive i tipi di query DNS comuni e gli ID corrispondenti.
| Type | ID |
|---|---|
| A | 1 |
| AAAA | 28 |
| SOA | 6 |
| SRV | 33 |
Le query DNS vengono risolte in molti modi diversi. A volte un client può rispondere a una query in locale usando informazioni memorizzate nella cache ottenute da una query precedente. Il server DNS può usare la propria cache di informazioni sui record di risorse per rispondere a una query. Un server DNS può anche eseguire query su altri server DNS per conto del client. Questo processo è noto come ricorsione. Il server risolve il nome e quindi invia una risposta al client.
Inoltre, il client stesso può tentare di contattare altri server DNS per risolvere un nome. In questo caso, un client usa query separate in base alle risposte di riferimento dai server. Questo processo è noto come iterazione.
In generale, il processo di query DNS viene eseguito in due parti:
- Una richiesta di nome inizia in un computer client e viene inviata a un resolver, il servizio client del DNS, per la risoluzione.
- Quando la query non può essere risolta in locale, è possibile eseguire query sui server DNS in base alle esigenze per risolvere il nome.
Ogni processo è illustrato in modo più dettagliato in questo articolo.
Funzionamento dell'iterazione
L'iterazione è il tipo di risoluzione dei nomi usata tra i client DNS e i server quando sono effettive le condizioni seguenti:
- Il client richiede l'uso della ricorsione, ma la ricorsione è disabilitata nel server DNS.
- Il client non richiede l'uso della ricorsione durante l'esecuzione di query sul server DNS.
Una richiesta iterativa da un client indica al server DNS che il client prevede la risposta migliore che il server DNS può fornire immediatamente, senza contattare altri server DNS.
Quando si usa l'iterazione, un server DNS risponde a un client in base alla propria conoscenza specifica dello spazio dei nomi relativo ai dati sui nomi su cui viene eseguita la query. Ad esempio, se un server DNS nella intranet riceve una query da un client locale per www.contoso.com, potrebbe restituire una risposta dalla cache dei nomi. Se il nome sottoposto a query non è attualmente archiviato nella cache dei nomi del server, il server potrebbe rispondere fornendo una segnalazione. Una segnalazione è un elenco di NS e RR per altri server DNS più vicini al nome sottoposto a query dal client.
Quando si usa l'iterazione, un server DNS può aiutare ulteriormente la risoluzione delle query di nomi oltre a fornire la sua risposta migliore al client. Per la maggior parte delle query iterative, un client usa l'elenco di server DNS configurato localmente per contattare altri server dei nomi in tutto lo spazio dei nomi DNS se il server DNS primario non è in grado di risolvere la query.
Il servizio client DNS Windows non esegue la ricorsione.
Funzionamento della memorizzazione nella cache
Poiché i server DNS elaborano query client usando ricorsione o iterazione, individuano e acquisiscono un archivio significativo di informazioni sullo spazio dei nomi DNS. Il server memorizza quindi nella cache queste informazioni.
La memorizzazione nella cache consente di velocizzare le prestazioni della risoluzione DNS per le query successive di nomi comuni, riducendo notevolmente il traffico di query correlato al DNS nella rete.
Poiché i server DNS effettuano query ricorsive per conto dei client, memorizzano temporaneamente nella cache i record di risorse. I record di risorse memorizzati nella cache contengono informazioni ottenute dai server DNS. Questi server sono autorevoli per i nomi di dominio DNS. Queste informazioni vengono apprese durante l'esecuzione di query iterative. Queste query consentono di rispondere completamente a una query ricorsiva eseguita per conto di un client. Successivamente, quando altri client inseriscono nuove query che richiedono informazioni sui record di risorse corrispondenti ai record memorizzati nella cache, il server DNS può usare le informazioni memorizzate nella cache per rispondere.
Quando le informazioni vengono memorizzate nella cache, un valore TTL (Time-To-Live) si applica a tutti i record di risorse memorizzati nella cache. Se la durata (TTL) per un record di risorse memorizzato nella cache non scade, un server DNS può continuare a memorizzare nella cache. Può usare di nuovo il record di risorse memorizzato nella cache per rispondere alle query dai client che corrispondono a questi record. Alla memorizzazione nella cache dei valori TTL usati dai record di risorse nella maggior parte delle configurazioni di zona viene assegnato il valore TTL minimo (predefinito) impostato nel record di risorsa SOA (Start of Authority) della zona. Per impostazione predefinita, il valore TTL minimo è di 3.600 secondi (un'ora), ma può essere regolato o, se necessario, i singoli TTL di memorizzazione nella cache possono essere impostati in ogni record di risorsa.
Note
Per impostazione predefinita, il servizio server DNS usa un file di suggerimenti di root, cache.dns, archiviato nella cartella <systemroot>\System32\Dns sul computer server. Questo file contiene i record di risorse NS e A per i server radice dello spazio dei nomi DNS (i server radice Internet o i server radice Intranet). Quando viene avviato il servizio server DNS, viene eseguita una query sull'elenco dei server radice per un elenco corrente di tutti i server radice. I risultati della query vengono usati per aggiornare il file hints di root. Questa operazione viene eseguita periodicamente anche durante l'esecuzione del servizio. Quando un amministratore apporta modifiche ai punti di riferimento radice, queste modifiche vengono riscritte nel file dei punti di riferimento radice.
Risolutore del servizio client DNS
Quando un nome di dominio DNS viene usato in un programma nel computer locale, la richiesta viene quindi passata al servizio client DNS per la risoluzione che controlla innanzitutto le informazioni memorizzate nella cache locale. Se il nome sottoposto a query può essere risolto, la query viene risposta e il processo viene completato.
Il diagramma seguente illustra un semplice esempio di client DNS che esegue una query sul servizio client DNS per una risoluzione dei nomi.
La cache del resolver locale può includere informazioni sul nome ottenute da due possibili origini:
Se un file Hosts è configurato localmente, tutti i mapping da nome host a indirizzo da tale file vengono caricati nella cache all'avvio del servizio client DNS.
I record di risorse ottenuti dalle risposte fornite in seguito a precedenti query DNS vengono aggiunti alla cache e mantenuti per un periodo di tempo determinato dal tempo di vita (TTL).
Se la query non corrisponde a una voce nella cache, il processo di risoluzione continua con il client che esegue una query su un server DNS per risolvere il nome.
Il diagramma seguente mostra il servizio client DNS che controlla la cache per una query DNS.
La configurazione dei client DNS con più di un indirizzo IP del server DNS aggiunge tolleranza ai guasti all'infrastruttura DNS. L'aggiunta di più indirizzi IP del server DNS garantisce che i nomi DNS possano comunque essere risolti se il server DNS primario, il collegamento di rete o l'infrastruttura di supporto non riesce.
Gli errori dei nomi possono causare blocchi di applicazioni o componenti, interruzioni delle risorse in attesa di scadenze di timeout dipendenti che causano direttamente o indirettamente errori operativi. Per informazioni più dettagliate su tutti gli scenari possibili, vedere Timeout della risoluzione del client DNS .
Per questi motivi, è consigliabile configurare qualsiasi client Windows con più server DNS. Tuttavia, il processo di risoluzione del client Windows varia a seconda del numero di server DNS configurati.
Processo di interrogazione del server DNS
Quando il server DNS riceve una query, verifica innanzitutto se può rispondere alla query in modo autorevole. Il server DNS esegue controlli usando le informazioni sui record di risorse contenute in una zona configurata localmente nel server.
Se il nome sottoposto a query corrisponde a un RR corrispondente nelle informazioni sulla zona locale, il server risponde in modo autorevole, usando queste informazioni per risolvere il nome sottoposto a query.
Se non esistono informazioni sulla zona per il nome sottoposto a query, il server verifica se è in grado di risolvere il nome usando le informazioni memorizzate nella cache locale delle query precedenti. Se viene trovata una corrispondenza, il server risponde con queste informazioni. Anche in questo caso, se il server preferito può rispondere con una risposta corrispondente positiva dalla cache al client richiedente, la query viene completata.
Se il nome sottoposto a query non trova una risposta corrispondente nel server preferito, dalle informazioni sulla cache o sulla zona, il processo di query può continuare, usando la ricorsione per risolvere completamente il nome. Questo processo comporta l'assistenza di altri server DNS per risolvere il nome. Per impostazione predefinita, il servizio client DNS chiede al server di usare un processo di ricorsione per risolvere completamente i nomi per conto del client prima di restituire una risposta.
Per consentire al server DNS di eseguire correttamente la ricorsione, è necessario prima di tutto alcune informazioni di contatto utili su altri server DNS nello spazio dei nomi del dominio DNS. Queste informazioni vengono fornite come suggerimenti di root. Gli hint radice sono un elenco di record di risorse preliminari. Il servizio DNS usa questi record per individuare altri server DNS autorevoli per la radice dell'albero dello spazio dei nomi del dominio DNS. I server radice sono autorevoli per i domini radice del dominio e di primo livello nell'albero dello spazio dei nomi del dominio DNS.
Usando gli hint di radice per trovare i server di radice, un server DNS può completare la ricorsione. In teoria, questo processo consente a qualsiasi server DNS di individuare i server autorevoli per qualsiasi altro nome di dominio DNS usato a qualsiasi livello nell'albero dello spazio dei nomi.
I passaggi seguenti descrivono il processo di esecuzione di query su un server DNS:
Se la query è un nome di dominio completo (FQDN), ovvero termina con un punto di terminazione (
.), la query viene inviata al server DNS. Ad esempio,www.contoso.com.Se la query è una query multi-etichetta non qualificata, ovvero non termina con un punto di terminazione (
.), il client DNS lo invia al server DNS con un punto di terminazione (.). Ad esempio,www.contoso.com.Se la query non qualificata è un'etichetta singola come
www. Il comportamento è quindi diverso in base alle impostazioni DNS nella scheda di interfaccia di rete.Se è presente un elenco di ricerca dei suffissi DNS, il servizio client DNS li aggiunge in ordine, dal primo all'ultimo, alla query a etichetta singola e invia la query con punto finale (
.) al server DNS. Questo processo è ripetuto fino a quando non viene utilizzato l'intero elenco di ricerca suffissi DNS.Se non è configurato alcun elenco di ricerca suffisso DNS, il servizio client DNS aggiunge il suffisso DNS primario alla query a etichetta singola con punto finale (
.) e lo invia al server DNS.Quando il client DNS è configurato per eseguire la devoluzione del nome, il suffisso DNS primario viene devoluto e viene inviata un'altra query con un punto di terminazione (
.) se il suffisso DNS primario fallisce. Ad esempio, se resolvewww.test.contoso.comha esito negativo, il client esegue il devolves towww.contoso.comSe è presente un suffisso DNS specifico delle connessioni configurato nelle schede, la query viene completata con un punto finale (
.) e viene inviata al server DNS.
In tutti i casi, la risposta viene archiviata nella cache del client DNS, indipendentemente dal fatto che la risposta sia positiva o negativa.
Il diagramma di flusso seguente illustra il processo descritto per l'esecuzione di query su un server DNS.
Ricorsione DNS
Prendere in considerazione l'uso del processo di ricorsione per individuare il nome host-b.example.contoso.com. quando il client esegue una query su un singolo server DNS. Il processo si verifica quando un server DNS e un client vengono avviati per la prima volta e non sono disponibili informazioni memorizzate nella cache locale per risolvere una query del nome. Si presuppone che il nome sottoposto a query dal client sia relativo a un nome di dominio di cui il server non ha alcuna conoscenza locale, in base alle relative zone configurate.
Per prima cosa, il server preferito analizza il nome completo e determina che ha bisogno della posizione del server autorevole per il dominio di primo livello, com. Usa quindi una query iterativa per il com server DNS per ottenere una segnalazione al contoso.com server. Successivamente, arriva una risposta di riferimento dal server al server DNS per contoso.com.
Infine, viene contattato il example.contoso.com. server. Poiché questo server contiene il nome sottoposto a query come parte delle zone configurate, risponde in modo autorevole al server originale che ha avviato la ricorsione. Quando il server originale riceve la risposta, verifica se la risposta è autorevole. In caso affermativo, il server inoltra questa risposta al client richiedente, completando il processo di query ricorsivo.
Anche se il processo di query ricorsivo può richiedere un utilizzo intensivo delle risorse quando viene eseguito come descritto, presenta alcuni vantaggi in termini di prestazioni per il server DNS. Ad esempio, durante il processo di ricorsione, il server DNS che esegue la ricerca ricorsiva ottiene informazioni sullo spazio dei nomi del dominio DNS. Il server memorizza nella cache le informazioni, che possono essere usate di nuovo per velocizzare la risposta alle query successive che usano o corrispondono. Nel corso del tempo, queste informazioni memorizzate nella cache possono aumentare fino a occupare una parte significativa delle risorse di memoria del server. La cache viene cancellata ogni volta che viene riavviato il servizio DNS.
Timeout adattivo delle query DNS
La funzionalità di timeout adattivo delle query DNS consente di adattare il timeout per le query DNS in base al tempo necessario per le query precedenti, riducendo il timeout per la maggior parte delle query. I timeout possono anche essere aumentati per i collegamenti a latenza elevata, ad esempio i collegamenti satellite. Le app di Windows Store possono ottimizzare la configurazione dei timeout DNS in base all'interfaccia di rete.
Invece di attendere 1.000 ms prima del timeout di una query DNS, il primo timeout viene modificato in modo da essere compreso tra 25 ms e 1.000 ms, in base alle prestazioni precedenti della rete.
Cache non rispondente del server DNS
I server DNS non reattivi vengono memorizzati nella cache e ritentati periodicamente. Questo ritiro consente al client DNS di usare il server più adatto in modo coerente e di dedicare meno tempo in attesa di server DNS non rispondenti.
La figura seguente mostra un esempio di come il client di DNS esegue query su ogni server di ogni adattatore seguendo il processo in questa sezione.
Il servizio client DNS esegue una query sui server DNS nella sequenza seguente:
Il servizio client DNS invia la query del nome al primo server DNS nell'elenco dei server DNS preferiti e attende un secondo per una risposta.
Se il servizio client DNS non riceve una risposta dal primo server DNS entro un secondo, invia la query del nome ai primi server DNS su tutti gli adattatori ancora in esame e attende due secondi per una risposta.
Se il servizio client DNS non riceve una risposta da alcun server DNS entro due secondi, invia la query a tutti i server DNS in tutte le schede ancora in considerazione. Il servizio client DNS attende quindi altri due secondi per una risposta.
Se il servizio client DNS non riceve ancora una risposta da alcun server DNS, invia la query del nome a tutti i server DNS su tutte le schede ancora in considerazione e attende quattro secondi per una risposta.
Se il servizio client DNS non riceve una risposta da alcun server DNS, il client DNS invia la query a tutti i server DNS su tutte le schede ancora in valutazione e attende otto secondi per una risposta.
Se il servizio client DNS non riceve una risposta da alcun server entro otto secondi, il servizio client DNS risponde con un timeout. Se il servizio client DNS non riceve una risposta da alcun server DNS in una scheda specifica, restituisce il timeout di tutte le query a tali server per i successivi 30 secondi su tale scheda.
Se in qualsiasi momento il servizio client DNS riceve una risposta negativa da un server, rimuove ogni server nella scheda di rete dalla lista di considerazione durante questa ricerca. Ad esempio, se il primo server dell'adattatore alternativo A restituisce una risposta negativa nel passaggio 2, il servizio client DNS non esegue query su altri server nell'elenco per l'adapter alternativo A.
Se il servizio client DNS riceve una risposta positiva, interrompe l'esecuzione di query per il nome, aggiunge la risposta alla cache e restituisce la risposta al client.
Il servizio client DNS tiene traccia dei server che rispondono alle query sui nomi più rapidamente e sposta i server verso l'alto o verso il basso nell'elenco in base alla velocità con cui rispondono alle query dei nomi.
Risposte alternative alle interrogazioni
La descrizione precedente delle query DNS presuppone che il processo termini con una risposta positiva restituita al client. Tuttavia, anche le query possono restituire altre risposte. Di seguito sono riportate le risposte alle query più comuni:
- Una risposta autorevole
- Una risposta positiva
- Una risposta di riferimento
- Una risposta negativa
Una risposta autorevole è una risposta positiva da un server DNS con autorità diretta sul nome sottoposto a query. Questa risposta include il bit di autorità impostato nel messaggio DNS per indicare l'autenticità.
Una risposta positiva può consistere nell'RR interrogato o in un elenco di record di risorse (noto anche come set di RR) che si adatta al nome di dominio DNS e al tipo di record specificato nel messaggio di query.
Una risposta di riferimento contiene altri record DNS non specificati per nome o tipo nella query. Questo tipo di risposta viene restituito al client se il processo di ricorsione non è supportato. I record devono fungere da risposte di riferimento utili che il client può usare per continuare la query usando l'iterazione. Una risposta di riferimento contiene più dati, ad esempio RR diversi dal tipo sottoposto a query. Ad esempio, se il server DNS non trova nessun A RR per il nome host www sottoposto a query in questa zona, ma trova invece un CNAME RR per www, può includere tali informazioni nella risposta al client. Se il client è in grado di usare l'iterazione, può eseguire più query utilizzando i dati di riferimento nel tentativo di risolvere completamente il nome da solo.
Una risposta negativa dal server può indicare uno dei due possibili risultati:
- Il server autorevole non è riuscito a trovare il nome sottoposto a query nello spazio dei nomi DNS.
- Il server autorevole ha trovato il nome sottoposto a query, ma non esiste alcun record del tipo specificato per tale nome.
Il sistema di risoluzione elabora la query e restituisce i risultati al programma richiedente. La risposta può essere positiva o negativa. Inoltre, il sistema di risoluzione memorizza nella cache la risposta per un uso futuro.
Se la risposta risultante a una query è troppo lunga per l'invio e la risoluzione in un singolo pacchetto di messaggi UDP, il server DNS può avviare una risposta di failover sulla porta TCP 53 per rispondere al client completamente in una sessione connessa TCP.
La disabilitazione dell'uso della ricorsione in un server DNS viene eseguita quando i client DNS sono limitati alla risoluzione dei nomi in un server DNS specifico, ad esempio quello che si trova nella intranet. La ricorsione potrebbe anche essere disabilitata quando il server DNS non è in grado di risolvere i nomi DNS esterni. In questo caso, ci si aspetta che i client eseguano il failover su un altro server DNS per la risoluzione dei nomi. Se si disabilita la ricorsione nel server DNS, non è possibile usare server d'inoltro nello stesso server.
Per impostazione predefinita, i server DNS usano diversi intervalli predefiniti quando si esegue una query ricorsiva e si contattano altri server DNS. Queste impostazioni predefinite includono:
- L'intervallo di tentativi di ricorsione è di 3 secondi. Questo intervallo è il tempo di attesa del servizio DNS prima di ripetere una query eseguita durante una ricerca ricorsiva.
- Intervallo di timeout di ricorsione di 8 secondi. Questo intervallo è il tempo di attesa del servizio DNS prima di non riuscire a eseguire una ricerca ricorsiva che è stata ritentata.
Nella maggior parte dei casi, questi parametri non richiedono modifiche. Tuttavia, se si usano ricerche ricorsive su un collegamento WAN (Wide Area Network) a velocità lenta, è possibile migliorare le prestazioni del server e il completamento delle query apportando lievi modifiche alle impostazioni.
Contenuti correlati
Per altre informazioni sul processo di ricerca inversa, vedere Ricerca inversa.