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.