Quem realmente “recursiva” em uma pesquisa de DNS recursiva?

16

Estou tentando entender a diferença entre pesquisas de DNS iterativas e recursivas. Fundamentalmente, penso em iterativo como sendo como chamar uma loja de departamento à procura de um produto, e quando eles não o têm, eles lhe dão o número de outro de seus ramos para ligar e então você chama o outro ramo. Versus recursivo, que é como chamar a loja de departamentos, e quando eles não têm o que você procura, eles ligam para a outra filial em seu nome procurando pelo produto. A questão é que estou tendo visões conflitantes sobre isso quando se trata de DNS. Quando penso em recursiva, penso em algo que se parece com isso:

MasenquantoliaartigosnaWebeatéfaziaumapesquisadeimagensdoGooglepara DNS recursivo , vejo muito mais exemplos que parece com isso:

Paramim,essesegundoexemploparecemaisiterativodoquerecursivo,porquecadaumdos"outros servidores DNS" está informando ao "servidor DNS preferencial" o endereço da próxima máquina a ser pesquisada, em vez de procurá-lo em nome do servidor DNS preferido. O único elemento recursivo que vejo é que o servidor DNS preferencial faz pesquisas em nome do cliente DNS, mas a partir daqui, com certeza parece ser iterativo.

Então, eu acho que a minha pergunta é: a pesquisa de DNS "recursiva" realmente significa apenas recursiva no sentido de o servidor DNS preferencial fazer algo em nome do cliente, mas realmente iterativo daqui para frente? A maioria dos resultados está em Pesquisa de imagens do Google está me levando a acreditar nisso, o que, então, levanta a questão: é o primeiro imagem neste post simplesmente errado?

    
por Bryce Thomas 18.09.2010 / 08:20

3 respostas

16

Seu último parágrafo está correto.

O sinalizador "Recursion Desired" (RD) enviado pelo cliente no cabeçalho de solicitação do DNS (consulte RFC 1035) pergunta ao servidor "por favor, responda-me completamente a essa pergunta".

Esse servidor do que iterativamente pergunta à cadeia de servidores de nomes a resposta correta. Essas consultas não devem ter o bit RD definido.

Por fim, a resposta do servidor recursivo terá o sinalizador "Recursion Available" (RA) definido, indicando que a resposta foi de fato totalmente respondida. Por outro lado, um servidor autoritativo não definirá o sinalizador RA.

IMHO, é uma má escolha de terminologia.

Por que vale a pena, o primeiro diagrama que você encontrou é fundamentalmente incorreto. Os servidores raiz não executam consultas para qualquer outro servidor, eles apenas emitem referências para outros servidores.

    
por 18.09.2010 / 12:30
4

Tanto quanto eu entendo, "pesquisa recursiva" é apenas a partir do ponto de vista do consultor original. Então, se ele perguntar a um servidor DNS e receber uma resposta completamente resolvida, então é uma "consulta recursiva". Se esse servidor, por sua vez, fizer buscas recursivas ou iterativas, bem, não é algo com que o consultor original precisa se preocupar.

    
por 18.09.2010 / 08:36
1

O primeiro dos dois diagramas na sua pergunta está incorreto. Servidores raiz não enviam consultas para outros servidores. Se os servidores-raiz fizessem, de fato, consultas como mostrado nesse diagrama, o sistema DNS ficaria muito mais vulnerável a ataques DoS do que realmente é.

O segundo diagrama está correto, mas simplificado demais para mostrar a natureza recursiva das pesquisas. O diagrama ainda é detalhado o suficiente, embora possamos apontar onde a recursão acontece.

O servidor DNS ao lado do número 12 daquele que denotou Preferred DNS server é o local em que ocorre a recursão. O termo Servidor DNS preferido não é uma terminologia padrão. Esse servidor normalmente seria chamado um recursor de DNS em cache ou alguma abreviação disso.

Ao olhar para o tráfego de rede, ele realmente parece iterativo. A recursão é inteiramente interna ao recursor DNS. Se você olhar para a implementação de um recursor DNS, encontrará algumas estruturas recursivas na forma como as solicitações são tratadas.

A recursão pode ser fácil de detectar se a implementação usar um thread por solicitação e as pesquisas forem implementadas usando chamadas de função recursivas. Mas projetos mais eficientes não usam um thread por solicitação e a recursão é encontrada dentro das estruturas de dados usadas pelo recursor DNS.

A razão pela qual a recursão é necessária é devido à forma como as referências entre os servidores DNS autoritários são implementadas. Isto é melhor ilustrado com um exemplo. No diagrama, você vê o servidor DNS autoritativo para microsoft.com apontar para o servidor DNS autoritativo para example.microsoft.com . Isso é feito usando um registro NS que aponta para um nome de host. Assim, por exemplo, o servidor autoritativo para microsoft.com poderia informar ao recursor DNS que ms.example.net é autoritativo para example.microsoft.com .

Nesse ponto, o recursor de DNS precisaria resolver ms.example.net antes de poder prosseguir com a resolução de example.microsoft.com .

Para resolver um nome de host, primeiro ele precisa resolver um nome de host diferente. Isso é recursão. Para que isso não leve à recursão infinita, o DNS tem registros de cola que são enviados junto com NS registros em certos casos.

    
por 05.07.2015 / 10:59