Estou tentando entender a diferença entre pesquisas de DNS iterativas e recursivas. Fundamentalmente, penso na iterativa como ligar para uma loja de departamentos à procura de um produto e, quando eles não o possuem, fornecem o número de outra filial para ligar e, em seguida, você mesmo chama a outra filial. Versus recursiva, que é como chamar a loja de departamentos, e quando eles não têm o que você está depois, eles chamam o outro ramo em seu nome olhando para o produto. O problema é que estou tendo opiniões conflitantes sobre isso quando se trata de DNS. Quando penso em recursivo, penso em algo parecido com isto:
Mas, ao ler artigos na Web e até mesmo fazer uma pesquisa de imagens no Google por DNS recursivo , vejo muito mais exemplos assim:
Para mim, este segundo exemplo parece mais iterativo do que recursivo, porque cada um dos "outros servidores DNS" está dizendo ao "servidor DNS preferencial" o endereço da próxima máquina a ser pesquisada, em vez de procurá-lo em nome da preferência. Servidor dns. O único elemento recursivo que vejo é que o servidor DNS preferido faz pesquisas em nome do cliente DNS, mas daqui em diante, com certeza parece iterativo.
Portanto, acho que minha pergunta é: a pesquisa de DNS "recursiva" realmente significa apenas recursiva no sentido de o servidor DNS preferido fazer algo em nome do cliente, mas realmente iterativo daqui para frente? A maioria dos resultados que estou vendo na pesquisa de imagens do Google está me levando a acreditar nisso, que então levanta a questão: a primeira imagem deste post está totalmente errada?
fonte
Respostas:
Seu último parágrafo está correto.
O sinalizador "Recursion Desired" (RD) enviado pelo cliente no cabeçalho da solicitação DNS (consulte RFC 1035) solicita ao servidor "por favor, me dê a resposta completa para esta pergunta".
Esse servidor solicita iterativamente a cadeia de servidores de nomes para a resposta correta. Essas consultas não devem ter o conjunto de bits RD definido.
Por fim, a resposta do servidor recursivo terá o sinalizador "Recursion Available" (RA) definido, indicando que a resposta foi realmente totalmente respondida. Por outro lado, um servidor autoritário não definirá o sinalizador RA.
IMHO, é uma má escolha de terminologia.
Pelo que vale, o primeiro diagrama que você encontrou é fundamentalmente incorreto. Os servidores raiz não executam consultas em nenhum outro servidor, apenas emitem referências para outros servidores.
fonte
Pelo que entendi, a "pesquisa recursiva" é exclusivamente da visão do consultante original. Portanto, se ele solicitar um servidor DNS e receber uma resposta completamente resolvida, será uma "consulta recursiva". Se esse servidor, por sua vez, faz pesquisas recursivas ou iterativas, isso não é algo com que o consultor original precisa se preocupar.
fonte
O primeiro dos dois diagramas da sua pergunta está incorreto. Servidores raiz não enviam consultas para outros servidores. Se os servidores raiz de fato encaminharem consultas como mostradas nesse diagrama, o sistema DNS estará muito mais vulnerável a ataques de DoS do que realmente é.
O segundo diagrama está mais correto, mas simplificado demais para mostrar a natureza recursiva das pesquisas. O diagrama ainda é detalhado o suficiente para que possamos apontar onde a recursão acontece.
O servidor DNS ao lado do número
12
indicadoPreferred DNS server
é onde ocorre a recursão. O termo servidor DNS preferido não é uma terminologia padrão. Esse servidor geralmente seria chamado de recursor DNS em cache ou alguma abreviação disso.Ao olhar para o tráfego de rede, ele realmente parece iterativo. A recursão é totalmente interna ao recursor de DNS. Se você observar a implementação de um recursor DNS, encontrará uma estrutura recursiva em como as solicitações são tratadas.
A recursão pode ser fácil de detectar se a implementação usa um encadeamento por solicitação e as pesquisas são implementadas usando chamadas de função recursivas. Porém, projetos mais eficientes não usam um encadeamento por solicitação e, em vez disso, a recursão é encontrada dentro das estruturas de dados usadas pelo recursor DNS.
A razão pela qual a recursão é necessária se deve à maneira como as referências entre os servidores DNS autoritativos são implementadas. Isso é melhor ilustrado com um exemplo. No diagrama, você vê o servidor DNS autoritativo para
microsoft.com
apontar para o servidor DNS autoritativo paraexample.microsoft.com
. Isso é feito usando umNS
registro que aponta para um nome de host. Por exemplo, o servidor autoritativo paramicrosoft.com
poderia informar ao recursor DNSms.example.net
autoritativoexample.microsoft.com
.Nesse ponto, o recursor do DNS precisaria resolver
ms.example.net
antes de poder prosseguir com a resolução deexample.microsoft.com
.Para resolver um nome de host, primeiro é necessário resolver um nome de host diferente. Isso é recursão. Para que isso não leve à recursão infinita, o DNS possui registros de cola que são enviados juntamente com os
NS
registros em certos casos.fonte