Eu não tenho ideia do que uma consulta DNS iterativa pode ser.
Uma consulta enviada para um servidor DNS pode definir o sinalizador "recursion requested". Em Humanspeak, é como dizer "qual é o endereço da coisa, e se você não sabe, por favor procure por mim". O servidor pode negar isso, e apenas retornar o equivalente a "Eu não sei, e não perguntei", ou pode responder com "Eu perguntei ao redor, e é [isto]" ou "Eu perguntei ao redor, e fui disse que é [isso] ", ou" Eu sei disso, é [isso], e eu sou realmente uma autoridade para esse endereço. "
Uma consulta não recursiva é apenas "qual é o endereço de [coisa], mas se você não sabe, apenas diga". O servidor já pode saber a resposta de uma consulta recursiva anterior e retorná-la, ou não, mas de qualquer forma ela não consultará nada.
Supondo que um servidor, vamos chamá-lo de S, honre a solicitação de recursão, ele pegará o nome - digamos, "www.example.com" - e começará com o componente mais à direita para o qual ele tem informações.
Isso pode não ser nada, nesse caso, S envia a consulta para os servidores raiz, uma lista da qual ela foi armazenada em cache ou foi fornecida como uma lista codificada ou pré-configurada. Um dos servidores raiz receberá a solicitação para "www.example.com, solicitação de recursão"; servidores raiz não recursão, mas eles retornarão a próxima melhor coisa que eles sabem: os servidores de nomes para ".com" junto com seus endereços.
Tente executar dig www.google.com @c.root-servers.net
S, em seguida, pergunta a um desses para "www.example.com, recursão solicitada". Eles também não vão recorrer, mas retornam a próxima melhor coisa: os servidores de nomes para "example.com", juntamente com seus endereços (mais uma vez pulando onde eles pegam isso - procure por "registros de cola").
Tente executar dig www.google.com @k.gtld-servers.net
S, em seguida, pergunta a um desses para "www.example.com, recursão solicitada". Eles não precisam recorrer, porque eles sabem a resposta, então eles mandam de volta junto com a bandeira "resposta autoritária".
Tente executar dig www.google.com @ns3.google.com
(observe o sinalizador "aa"; aqui está uma lista de sinalizadores de resposta ).
S enviará a resposta final de volta ao cliente, sem o sinalizador "aa", porque S não é autoritativo, ou seja, teve que perguntar.
Em alguns aspectos, uma consulta "recursiva" é tratada "iterativamente" por S. Se o cliente quisesse fazer isso diretamente, precisaria ter uma lista pré-configurada de servidores-raiz (que poderia ser atualizada perguntando a eles) e deve armazenar em cache os resultados para que outros programas locais sejam reutilizados. O que basicamente significa que você estaria executando um servidor de nomes recursivo, somente em cache (porque não é autoritativo para nada) no host local.
Então ... você pode esclarecer sua pergunta? O que você acha que quer fazer?