2012-04-01 16 views
9

Sto facendo un resolver e un programma nameserver senza usare le librerie dns (come netdb.h) inviando direttamente un messaggio dns. ma ho pochi problemi. Per quanto ne so quando inviamo una richiesta ricorsiva, il server dei nomi interrogato rileva i record per noi. Le query utilizzate dal server dei nomi per interrogare altri server sono simili alle query iterative? almeno queste immagini lo suggeriscono.Differenza tra ricerca dns ricorsiva e iterativa

Sono confuso anche se un client può eseguire una query iterativa o solo un server dei nomi può eseguire query iterative?

ricorsivo dns lookup:

Recursive dns lookup

iterativo dns lookup: Iterative dns lookup

+0

non è il tuo primo caso uno schema DNS iterativo, o almeno 'ibrido'? Uno schema puramente ricorsivo non seguirebbe tale percorso: computer -> server localDNS -> Root -> .com -> contoso.com, quindi contoso.com restituirebbe l'IP al contrario? – mercury0114

risposta

5

Un client certamente può fare query iterative di propria senza bisogno di consultare un risolutore ricorsivo, ma ci sono molte ragioni per non per farlo:

  • semplificare la complessità del software che deve essere st nelle librerie di stub resolver (ad es. libresolv o built in libc) su ogni host
  • delegare l'esecuzione di query iterative a un server in una rete ISP o più vicino a un "backbone" che avrà una migliore connessione Internet (soprattutto, ritardo inferiore) e può completare la query iterativa più velocemente .
  • aggregare le query DNS di molti utenti finali su un numero limitato di resolver di memorizzazione nella cache. La maggior parte delle volte i resolver non dovranno fare la query iterativa completa: avranno alcuni o tutti i risultati già memorizzati nella cache.
  • ridurre il numero di posizioni in cui è necessario distribuire il file "hints" (un elenco di server dei nomi di root e relativi indirizzi IP), necessario per eseguire il bootstrap di un resolver ricorsivo.

DNSSEC getta una chiave in questo: con DNSSEC, l'utente finale deve eseguire la query iterativa completa se desidera certificare il risultato. Non è ancora stato visto come si verificherà la distribuzione su larga scala dei risolutori abilitati DNSSEC.

+1

Una buona spiegazione, sebbene la parte DNSSEC sia assolutamente sbagliata. Il processo di risoluzione DNSSEC è identico a DNSSEC. – Sandman4

+0

Per convalidare un risultato DNSSEC, è necessario seguire la catena di trust fino alla radice (o ad un'altra ancora attendibile). Per fare questo, finirai per eseguire iterativamente quasi le stesse query richieste dal processo di risoluzione iterativo in primo luogo. – Celada

+0

Senza DNSSEC segui la catena di delega, con DNSSEC segui catena di delega ** e ** catena di fiducia, ma è _essentiamente la stessa catena_. DNSSEC aggiunge solo informazioni extra allo stesso processo. – Sandman4

6

Qualsiasi client DNS (o "resolver") può eseguire query iterative.

Per definizione, però, un resolver che fa eseguire query iterative è un ricorsiva resolver , e non un stub resolver.

I resolver di stub vengono in genere implementati come librerie , collegate direttamente al file eseguibile.

Tuttavia è anche possibile creare un risolutore ricorsivo completo come libreria autonoma. libunbound è un esempio particolarmente valido.

1

una query ricorsiva: - il server DNS potrebbe inviare query di altri server DNS in Internet per conto dell'utente, per la risposta.Il server proxy invia la query al server principale per la risposta.

In una query iterativa, il server dei nomi, non andrà a prendere la risposta completa per la query, ma restituirà un riferimento ad altri server DNS, che potrebbero avere la risposta. il server proxy ti dà la risposta a meno che non dia alla ricerca in altri server

Problemi correlati