Estoy tratando de entender la diferencia entre las búsquedas de DNS iterativas y recursivas. Básicamente, pienso que iterativo es como llamar a una tienda por departamentos en busca de un producto, y cuando no lo tienen, le dan el número de otra de sus sucursales para llamar y luego usted mismo llama a la otra sucursal. Versus recursivo, que es como decir que los grandes almacenes, y cuando ellos no tienen lo que está buscando, que llame a la otra rama en su nombre buscar el producto. La cuestión es que obtengo puntos de vista conflictivos sobre esto cuando se trata de DNS. Cuando pienso en recursivo, pienso en algo que se parece a esto:
Pero mientras leo artículos en la web, e incluso hago una búsqueda de imágenes de Google para DNS recursivo , veo muchos más ejemplos que se parecen a esto:
Para mí, este segundo ejemplo parece más iterativo que recursivo, porque cada uno de los "otros servidores DNS" le está diciendo al "servidor DNS preferido" la dirección de la próxima máquina para buscar, en lugar de buscarlo en nombre de los preferidos Servidor DNS. El único elemento recursivo que veo es que el servidor DNS preferido realiza búsquedas en nombre del cliente DNS, pero a partir de ahora, sin embargo, parece iterativo.
Así que supongo que mi pregunta es, ¿la búsqueda de DNS "recursiva" realmente solo significa recursiva en el sentido de que el servidor DNS preferido hace algo en nombre del cliente, pero es realmente iterativo de ahora en adelante? La mayoría de los resultados que veo en la búsqueda de imágenes de Google me llevan a creer esto, lo que luego plantea la pregunta, ¿es la primera imagen en esta publicación simplemente incorrecta?
fuente
Respuestas:
Tu último párrafo es correcto.
El indicador "Recursion Desired" (RD) enviado por el cliente en el encabezado de solicitud DNS (consulte RFC 1035) le pregunta al servidor "por favor, deme la respuesta completa a esta pregunta".
Ese servidor de forma iterativa le pide a la cadena de servidores de nombres la respuesta correcta. Esas consultas no deberían tener el bit RD establecido.
En última instancia, la respuesta del servidor recursivo tendrá el indicador "Recursion Available" (RA) establecido, lo que indica que la respuesta fue realmente completa. Por el contrario, un servidor autorizado no establecerá el indicador RA.
En mi humilde opinión, es una mala elección de terminología.
Por lo que vale, ese primer diagrama que has encontrado es fundamentalmente incorrecto. Los servidores raíz no realizan consultas a ningún otro servidor, solo emiten referencias a otros servidores.
fuente
Según tengo entendido, la "búsqueda recursiva" es únicamente desde el punto de vista del interrogador original. Entonces, si le pregunta a un servidor DNS y obtiene una respuesta completamente resuelta, entonces es una "consulta recursiva". Si ese servidor, a su vez, realiza búsquedas recursivas o iterativas, bueno, no es algo que deba interesar al interrogador original.
fuente
El primero de los dos diagramas en su pregunta es incorrecto. Los servidores raíz no envían consultas a otros servidores. Si los servidores raíz de hecho reenviaran consultas como se muestra en ese diagrama, el sistema DNS sería mucho más vulnerable a los ataques DoS de lo que realmente es.
El segundo diagrama es en su mayoría correcto pero demasiado simplificado para mostrarle la naturaleza recursiva de las búsquedas. Sin embargo, el diagrama aún es lo suficientemente detallado como para señalar dónde ocurre la recursividad.
El servidor DNS al lado del número
12
indicadoPreferred DNS server
es donde ocurre la recursividad. El término servidor DNS preferido no es la terminología estándar. Ese servidor generalmente se llamaría un recursor DNS de almacenamiento en caché o alguna abreviatura de eso.Al mirar el tráfico de la red, de hecho parece iterativo. La recursividad es completamente interna para el recursor DNS. Si observa la implementación de un recursor DNS, encontrará una estructura recursiva en la forma en que se manejan las solicitudes.
La recursión puede ser fácil de detectar si la implementación usa un hilo por solicitud y las búsquedas se implementan mediante llamadas a funciones recursivas. Pero los diseños más eficientes no usan un hilo por solicitud y la recursión se encuentra dentro de las estructuras de datos utilizadas por el recurrente DNS.
La razón por la que se necesita la recursión se debe a cómo se implementan las referencias entre los servidores DNS autorizados. Esto se ilustra mejor con un ejemplo. En el diagrama, verá el servidor DNS autorizado para
microsoft.com
señalar el servidor DNS autorizadoexample.microsoft.com
. Esto se realiza mediante unNS
registro que apunta a un nombre de host. Entonces, por ejemplo, el servidor autorizado paramicrosoft.com
podría decirle al recurrente DNS quems.example.net
es autorizado paraexample.microsoft.com
.En ese punto, el recurrente DNS tendría que resolver
ms.example.net
antes de poder proceder con la resolución deexample.microsoft.com
.Para resolver un nombre de host, primero tiene que resolver un nombre de host diferente. Eso es recursividad. Para que esto no conduzca a una recursión infinita, DNS tiene registros de pegamento que se envían junto con los
NS
registros en ciertos casos.fuente