Omet navegació

4.1. Consultes recursives

Consultes recursives

Quan un servidor rep una consulta del client mira la base de dades local de la seva zona. Si existeix la informació sol·licitada la retorna. Si la dada no forma part de la seva zona, però la té emmagatzemada en cache (per què ja ha realitzat amb anterioritat un consulta similar i ha emmagatzemat temporalment la resposta) també la retorna. Si la dada no forma part del seu espai de noms ni es troba en la cache, el mode recursiu mana al servidor anar preguntant recursivament a altres servidors, apropant-se més a cada pas al domini sol·licitat. Si el servidor no coneix cap servidor més proper al domini buscat a qui preguntar, acaba preguntant als servidors de l'arrel.

Si tots els processos recursius acabaren preguntant als nodes arrel, aquests es saturarien. El servidor que ha rebut la consulta del resolver pregunta al node més proper al domini buscat. Si coneix algun servidor de noms més proper, li ho pregunta i s'evita d'anar a l'arrel.

Una altra manera d'evitar la sobrecàrrega dels nodes arrel és l'ús de la informació emmagatzemada de consultes anteriors, que es desa localment en la cache del servidor.

Imagineu un alumne de Sydney estudiant de l'IOC que genera una consulta al servidor de noms del seu ISP australià per identificar el domini www.int.ioc.cat. Probablement el servidor desconeix aquest domini i tots els més propers, inf.ioc.cat i ioc.cat. Però segurament en la cache (per altres consultes) té la llista de servidors de noms autoritaris del domini .cat. Serà a un d'aquests servidors (i no un node arrel) a qui farà la consulta que li permetrà accedir descendentment al domini buscat.

Per tant, en el procés recursiu, el servidor de noms que rep la consulta del resolver ha de tornar una resposta que pot procedir de la seva base de dades de zona, de la cache, o de les respostes finals que ha obtingut preguntant recursivament a altres servidors més propers al domini a consultar.

Fixeu-vos que un servidor que rep una consulta recursiva del resolver té la feina d'esbrinar per a ell la resposta. Podria repetir la mateixa consulta al servidor més proper fent-la recursiva en lloc d'iterativa. Això exigiria a l'altre servidor fer tota la feina. Aquest plantejament, tot i que possible, es considera abusiu.

Usualment el client consulta el seu DNS de manera recursiva, i els servidors es consulten entre ells de manera iterativa.