Cómo los navegadores manejan múltiples IP [cerrado]

11

¿Alguien puede dirigirme a información sobre el comportamiento exacto de los navegadores cuando el navegador obtiene múltiples registros A para un nombre de host dado (digamos ip1 e ip2), y uno de ellos no es accesible.

Me interesaron los detalles EXACTOS, como (pero no limitado a):

  1. ¿Obtendrá el navegador 2 IP del sistema operativo o solo obtendrá uno?
  2. ¿Qué ip intentará primero el navegador (aleatorio o siempre el primero)? Ahora, digamos que el navegador comenzó con la falla de ip1
  3. ¿Durante cuánto tiempo probará el navegador ip1?
  4. Si el usuario presiona "detener" mientras espera ip1, y luego hace clic en actualizar
    • ¿Qué IP intentará el navegador?
  5. ¿Qué sucederá cuando se agote el tiempo de espera? ¿Comenzará a probar ip2 o dará un error? (Y si hay un error, qué ip intentará el navegador cuando el usuario haga clic en actualizar).
  6. Cuando el usuario hace clic en actualizar, ¿algún navegador intentará una nueva búsqueda de DNS?

Ahora supongamos que el navegador intentó trabajar ip2 primero.

  1. Para la siguiente solicitud de página, ¿el navegador seguirá usando ip2 o puede cambiar aleatoriamente los ips?
  2. ¿Durante cuánto tiempo los navegadores mantienen las IP en su caché?
  3. Cuando los navegadores envíen una nueva solicitud de DNS y obtengan MISMOS ips, ¿CONTINUARÁ usando la misma IP que se sabe que está funcionando o el proceso comienza desde cero y puede probar cualquiera de los dos?

Por supuesto, todo puede depender del navegador y también puede variar entre versiones y plataformas, me encantaría tener el máximo de detalles.

El propósito de esto: estoy tratando de entender qué experimentarán exactamente los usuarios cuando se use un DNS basado en round-robin y uno de los hosts falle.

Por favor, NO estoy preguntando qué tan malo es el equilibrio de carga de DNS, y por favor abstenerse de responder "no lo hagas", "es una mala idea", "necesitas latido / proxy / BGP / lo que sea" y así sucesivamente.

Sandman4
fuente
1
Hay una extensión de navegador para Firefox que muestra las direcciones IP, así como la dirección IP que se está utilizando actualmente ( addons.mozilla.org/en-US/firefox/addon/showip/?src=search ). También puede usar la pestaña 'Red' de Firebug para mostrar las solicitudes IP atendidas. Obviamente, esto solo es relevante para Firefox, pero creo que la consola de desarrollo de Chrome muestra que las solicitudes de IP fueron atendidas.
Mancha
También tenga en cuenta que los servidores DNS de algunos ISP sólo he volver una dirección IP, por qué hacen esto no tengo ni idea
mancha
Gracias Sam Y sí, la consola Chrome muestra búsquedas de DNS, caché y muestra qué IP se solicita.
Sandman4
Si desea hablar sobre el comportamiento exacto , lo primero que debe tener en cuenta sobre cómo los navegadores web manejan los registros es que no lo hacen . La resolución de nombres es manejada por la pila de red. Entonces, ¿está tratando de preguntar sobre alguna rareza específica del navegador que haya notado o sobre la resolución de nombres?
Rob Moir
Los navegadores sí reciben (de la pila de red) varias IP enumeradas en los registros A para un nombre de host. En Google Chrome, intente chrome: // net-internals / # dns y vea usted mismo.
Sandman4

Respuestas:

5

Después de todo, tuve que hacer la "investigación" yo mismo. Aquí está el comportamiento de Chromium (versión 12.0.742.112) (que se ejecuta en ubuntu 11.04):

Por lo general, funciona así: pruebe con la 1ª ip, una vez que se agote el tiempo de espera (después de 189 segundos) pruebe con la 2ª ip. No se muestran mensajes de error hasta que se prueban todos los ips. La próxima conexión comenzará desde la primera ip nuevamente (incluso si solo falló hace un segundo y la segunda ip funcionó - al navegador no le importa)

Una cosa interesante: el intento de conexión TCP no se interrumpe cuando el usuario presiona cancelar, es decir, cuando presiono cancelar, y después de 60 segundos, haga clic en reintentar, la página se mostrará en 130 segundos (189 desde el primer intento). Pero si hago clic en cancelar y hago clic actualizar después de 190 segundos, el proceso comenzará desde el principio.

Con respecto a los artículos en la pregunta original:

  1. El navegador obtiene ambas IP del sistema operativo, el sistema operativo no cambia el orden de las IP.
  2. El navegador siempre intenta conectarse a la IP que aparece primero
  3. Lo intenta por 189 segundos
  4. En el segundo intento, volverá a intentar la primera IP.
  5. Cuando se agota el tiempo de espera de la primera IP, el navegador continúa silenciosamente hasta la segunda ip. Si funciona, la página aparece, si no, la espera continúa.
  6. No probado. Este blog indica que Chrome almacena en caché DNS por hasta 1 minuto, cuando miramos chrome: // net-internals / # dns:

    Capacidad: 100 Tiempo de vida (ms) para entradas exitosas: 60000 Tiempo de vida (ms) para entradas fallidas: 0

Si la primera IP funciona, el proceso será el mismo y siempre tendrá éxito en el primer intento.

Sandman4
fuente
4

En lugar de decirle a la gente lo que no quieres, ¿por qué no explicar lo que estás tratando de lograr?

Si todo lo que busca son datos conocidos, vaya e investíguese, o lea la documentación de cualquier navegador (hay cientos) del que está hablando.

Sin embargo, puede ayudarlo saber que esto no tiene nada que ver con DNS.

Si un navegador recibe una solicitud, primero busca en sus diversas cachés para ver si la URL, o si no la URL, entonces el nombre de host, ya está presente.
Si no, golpeará el sistema de resolución para resolver el nombre de host.

Si la IP que recupera no responde, seguramente la almacenará en caché internamente como un resultado de búsqueda negativo , por lo que solicitar directamente la misma URL nuevamente con la esperanza de obtener un registro A diferente para él probablemente no servirá para nada, ya que lo hará. ha almacenado el resultado del nombre de host junto con el resultado negativo de IP.

O bien, podría proporcionar más información.

EDITAR: veo que proporcionaste alguna información entre todos los exigentes y la serie inteligente.

Muy bien:

  1. Si el navegador le pide al solucionador del sistema un nombre de host, obtendrá la información que haya para ese nombre de host. Si eso significa 2 IP, devolverá 2 IP.
  2. Eso depende del navegador.
  3. Eso depende del navegador, pero todos los navegadores que he usado hacen una sola solicitud y se agotarán después del tiempo de espera estándar de TCP CONNECT (); Estoy bastante seguro de que hay un RFC sobre eso en alguna parte ...
  4. Eso depende del navegador. No tiene nada que ver con DNS o redes.
  5. No.
  6. No.

También parece no saber que los registros DNS se almacenan en caché en todas partes, especialmente en los clientes. Estos registros caducan, dependiendo de lo que pretendía el propietario del dominio o de los cachés configurados entre usted y él. Es común una hora a un día, así que no espere que el solucionador haga otra consulta DNS si presiona actualizar como un loco.

Adaptador
fuente
2
Se agregó una explicación de lo que estoy tratando de lograr. Busco datos conocidos, esperaba que alguien lo supiera porque puede llevar días encontrar la información relevante. Exigente? Estoy pidiendo la información que necesito, no puedo exigir, todos son libres de responder o no. Smartassery? Me duele tu publicación y no creo que me lo merezca.
Sandman4
1
Simplemente no quería que la discusión se convirtiera en llamas contra el equilibrio de carga de DNS. De todos modos, gracias por señalarme a TCP CONNECT ().
Sandman4