Como os navegadores lidam com vários IPs [fechado]

11

Alguém pode me direcionar para informações sobre o comportamento exato dos navegadores quando o navegador obtém vários registros A para um determinado nome de host (por exemplo, ip1 e ip2) e um deles não está acessível.

Estou interessado em detalhes EXATOS, como (mas não limitado a):

  1. O navegador obterá 2 IPs do SO ou obterá apenas um?
  2. Qual ip o navegador tentará primeiro (aleatório ou sempre o primeiro)? Agora, digamos que o navegador tenha começado com o ip1 com falha
  3. Por quanto tempo o navegador tentará o ip1?
  4. Se o usuário pressionar "parar" enquanto aguarda o ip1 e clicar em atualizar
    • qual IP o navegador tentará?
  5. O que acontecerá quando atingir o tempo limite - começará a tentar o ip2 ou dará erro? (E se houver erro, qual ip o navegador tentará quando o usuário clicar em atualizar).
  6. Quando o usuário clica em atualização, algum navegador tentará uma nova pesquisa de DNS?

Agora, vamos assumir que o navegador tentou trabalhar primeiro com o ip2.

  1. Para a solicitação da próxima página, o navegador ainda usará o ip2 ou poderá alternar aleatoriamente ips?
  2. Por quanto tempo os navegadores mantêm os IPs em seu cache?
  3. Quando os navegadores enviam uma nova solicitação de DNS e obtêm os mesmos ips, continuará a usar o mesmo IP conhecido como funcionando ou o processo inicia do zero e pode tentar qualquer um dos dois?

É claro que tudo pode depender do navegador e também pode variar entre versões e plataformas. Eu ficaria feliz em ter o máximo de detalhes.

O objetivo disso - estou tentando entender o que exatamente os usuários experimentarão quando o DNS baseado em rodízio for usado e um dos hosts falhar.

Por favor, NÃO estou perguntando sobre o quão ruim é o balanceamento de carga do DNS, e evite responder "não faça", "é uma má idéia", "você precisa de pulsação / proxy / BGP / qualquer outra coisa" e assim por diante.

Sandman4
fonte
1
Há uma extensão de navegador para o Firefox que mostra o (s) endereço (s) IP (s), bem como qual endereço IP está sendo usado no momento ( addons.mozilla.org/en-US/firefox/addon/showip/?src=search ). Você também pode usar a guia 'Net' do Firebug para mostrar que as solicitações de IP foram atendidas. Obviamente, isso é relevante apenas para o Firefox, mas acredito que o console do desenvolvedor do Chrome mostre que as solicitações de IP foram atendidas.
Smudge
Observe também que os servidores DNS de algum ISP só vai retornar um endereço IP, por que eles fazem isso eu não tenho idéia
Smudge
Obrigado Sam. E sim, o console do Chrome mostra pesquisas de DNS, cache e mostra qual IP é solicitado.
Sandman4
Se você quiser falar sobre o comportamento exato , a primeira coisa a observar sobre como os navegadores lidam com os registros é que eles não o fazem . A resolução de nomes é tratada pela pilha de rede. Então, você está tentando perguntar sobre alguma estranheza específica do navegador que notou ou está perguntando sobre a resolução de nomes?
precisa
Os navegadores recebem (da pilha de rede) vários IPs listados nos registros A para um nome de host. No Google Chrome, tente chrome: // net-internals / # dns e veja a si mesmo.
Sandman4

Respostas:

5

Afinal, eu tive que fazer a "pesquisa" sozinha. Aqui está o comportamento do Chromium (versão 12.0.742.112) (executando no ubuntu 11.04):

Geralmente funciona assim: tente o 1º ip, depois que o tempo limite exceda o tempo limite (após 189 segundos), tente o 2º ip. Nenhuma mensagem de erro é fornecida até que todos os ips tentem. A próxima conexão será iniciada novamente a partir do primeiro ip (mesmo que tenha falhado há um segundo e o segundo ip tenha funcionado - o navegador não se importa)

Uma coisa interessante - a tentativa de conexão TCP não é descartada quando o usuário clica em cancelar - ou seja, quando clico em cancelar e, após 60 segundos, clique em tentar novamente, a página será exibida em 130 segundos (189 na primeira tentativa). Mas se eu clicar em cancelar e clicar em atualizar após 190 segundos, o processo será iniciado desde o início.

Em relação aos itens da pergunta original:

  1. O navegador obtém os dois IPs do SO, o SO não altera a ordem dos IPs.
  2. O navegador sempre tenta se conectar ao ip que aparece primeiro
  3. Ele tenta por 189 segundos
  4. Na segunda tentativa, ele tentará o primeiro IP novamente.
  5. Quando o primeiro IP atinge o tempo limite, o navegador continua silenciosamente até o segundo ip. Se funcionar - a página aparece, se não - a espera continua.
  6. Não testado. Este blog afirma que o Chrome armazena em cache o DNS por apenas 1 minuto, quando analisamos chrome: // net-internals / # dns:

    Capacidade: 100 Tempo de vida (ms) para entradas de sucesso: 60000 Tempo de vida (ms) para entradas de falha: 0

Se o primeiro IP funcionar, o processo será o mesmo e sempre terá êxito na primeira tentativa.

Sandman4
fonte
4

Em vez de dizer às pessoas o que você não quer, por que não explicar o que você está tentando alcançar?

Se tudo o que você procura são dados conhecidos, investigue a si mesmo ou leia a documentação de qualquer navegador (existem centenas) sobre o qual você está falando.

Pode ser útil saber que isso não tem nada a ver com o DNS.

Se um navegador recebe uma solicitação, ele primeiro procura em seus vários caches para ver se o URL, ou se não o URL e o nome do host, já estão presentes.
Caso contrário, ele atingirá o resolvedor do sistema para resolver o nome do host.

Se o IP de retorno não responder, certamente o armazenará em cache internamente como um resultado de pesquisa negativa , solicitando diretamente o mesmo URL novamente na esperança de atingir um registro A diferente, pois provavelmente não servirá para nada, pois armazenou o resultado do nome do host junto com o resultado negativo do IP.

Ou, você sabe, você pode fornecer mais informações.

EDIT: Vejo que você forneceu algumas informações entre todos os exigentes e inteligentes.

Muito bem:

  1. Se o navegador solicitar ao resolvedor do sistema um nome de host, ele retornará todas as informações existentes sobre esse nome de host. Se isso significa 2 IPs, retornará 2 IPs.
  2. Isso depende do navegador.
  3. Isso depende do navegador, mas todos os navegadores que já usei fazem uma única solicitação e atingem o tempo limite após o tempo limite padrão do TCP CONNECT (); Estou bastante certo de que há um RFC sobre isso em algum lugar ...
  4. Isso depende do navegador. Não tem nada a ver com DNS ou rede.
  5. Não.
  6. Não.

Você também parece não saber que os registros DNS são armazenados em cache em todos os lugares, especialmente nos clientes. Esses registros expiram, dependendo do que o proprietário do domínio pretendia ou dos caches entre você e ele configurados. Uma hora a um dia é comum; portanto, não espere que o resolvedor faça outra consulta DNS se você atualizar como um louco.

adaptr
fonte
2
Adicionado explicação do que estou tentando alcançar. Estou atrás de dados conhecidos, espero que alguém saiba, pois pode levar dias para encontrar as informações relevantes. Exigente? Estou pedindo as informações de que preciso, não posso exigir - todo mundo é livre para responder ou não. Smartassery? Fico magoado com a sua postagem e acho que não mereço.
Sandman4
1
Eu só não queria que a discussão se transformasse contra o balanceamento de carga do DNS. De qualquer forma, obrigado por me apontar para TCP CONNECT ().
Sandman4