12 votes

Comment les navigateurs gèrent les adresses IP multiples

Quelqu'un peut-il me diriger vers des informations sur exact comportement du navigateur lorsqu'il obtient plusieurs enregistrements A pour un nom d'hôte donné (disons ip1 et ip2), et que l'un d'eux n'est pas accessible.

Je suis intéressé par les détails EXACTS, comme (mais pas seulement) :

  1. Le navigateur obtiendra-t-il deux adresses IP de l'OS, ou une seule ?
  2. Quelle ip le navigateur va-t-il essayer en premier (aléatoire ou toujours la première) ? Maintenant, disons que le navigateur a commencé avec l'ip1 qui a échoué.
  3. Pendant combien de temps le navigateur va-t-il essayer l'ip1 ?
  4. Si l'utilisateur appuie sur "stop" pendant qu'il attend ip1, puis clique sur "refresh".
    • Quelle IP le navigateur va-t-il essayer ?
  5. Que se passera-t-il lorsque le temps sera écoulé ? Essaiera-t-il d'essayer ip2 ou donnera-t-il une erreur ? (Et en cas d'erreur, quelle ip le navigateur essaiera-t-il lorsque l'utilisateur clique sur rafraîchir).
  6. Lorsque l'utilisateur clique sur rafraîchir, le navigateur tente-t-il une nouvelle recherche DNS ?

Maintenant, supposons que le navigateur a d'abord essayé de faire fonctionner l'IP2.

  1. Pour la prochaine demande de page, le navigateur utilisera-t-il toujours ip2, ou pourra-t-il aléatoirement changer d'adresse IP ?
  2. Pendant combien de temps les navigateurs conservent-ils les adresses IP dans leur cache ?
  3. Lorsque les navigateurs envoient une nouvelle demande DNS, et obtiennent les mêmes adresses IP, est-ce que CONTINUERA-t-il d'utiliser la même adresse IP connue pour fonctionner, ou le processus recommence à et il peut essayer l'une des deux ?

Bien sûr, tout cela peut dépendre du navigateur, et peut également varier entre les versions et les plateformes, je serais heureux d'avoir un maximum de détails.

Le but de ceci - J'essaie de comprendre ce que les utilisateurs ressentent exactement lorsque le DNS basé sur le round-robin est utilisé et que l'un des hôtes échoue.

S'il vous plaît, je ne demande PAS à quel point l'équilibrage de charge DNS est mauvais, et s'il vous plaît, abstenez-vous de répondre "ne le faites pas", "c'est une mauvaise idée", "vous avez besoin de heartbeat/proxy/BGP/quelque chose" et ainsi de suite.

1 votes

Il existe une extension pour Firefox qui permet d'afficher les adresses IP, ainsi que l'adresse IP actuellement utilisée ( addons.mozilla.org/en-US/firefox/addon/showip/?src=search ). Vous pouvez également utiliser l'onglet 'Net' de Firebug pour afficher l'IP par laquelle les requêtes ont été servies. Bien entendu, cela ne concerne que Firefox, mais je crois que la console de développement de Chrome affiche les IP par lesquelles les requêtes ont été servies.

0 votes

Notez également que les serveurs DNS de certains FAI ne renvoient jamais qu'une seule adresse IP ; je n'ai aucune idée de la raison pour laquelle ils font cela.

0 votes

Merci Sam. Et oui, la console chrome montre les recherches DNS, le cache et montre quelle IP est demandée.

5voto

Sandman4 Points 4005

Après tout, j'ai dû faire les "recherches" moi-même. Voici le comportement de Chromium (version 12.0.742.112) qui tourne sur ubuntu 11.04 :

En général, cela fonctionne de la façon suivante : essayez la première adresse IP, une fois qu'elle a expiré (après 189 secondes), essayez la deuxième. Aucun message d'erreur n'est donné tant que toutes les adresses IP n'ont pas été essayées. La prochaine connexion commencera à nouveau à partir de la première ip (même si elle a échoué il y a une seconde et que la deuxième ip a fonctionné - le navigateur s'en moque).

Une chose intéressante : la tentative de connexion TCP n'est pas interrompue lorsque l'utilisateur appuie sur la touche d'annulation - c'est-à-dire que si j'appuie sur la touche d'annulation et que je clique sur réessayer après 60 secondes, la page s'affichera dans 130 secondes (189 depuis la première tentative). après 190 secondes, le processus recommence depuis le début.

En ce qui concerne les points de la question originale :

  1. Le navigateur reçoit les deux IP de l'OS, l'OS ne change pas l'ordre des IP.
  2. Navigateur toujours essaie de se connecter à l'ip qui apparaît en premier
  3. Il essaie pendant 189 secondes
  4. Au deuxième essai, il réessayera la première IP.
  5. Lorsque la première IP s'arrête, le navigateur continue silencieusement vers la seconde. Si cela fonctionne, la page s'affiche, sinon, l'attente continue.
  6. Non testé. Ce blog Chrome met en cache les DNS pendant une minute seulement, lorsque nous regardons chrome://net-internals/#dns :

    Capacité : 100 Temps de vie (ms) pour les entrées réussies : 60000 Temps de vie (ms) pour les entrées d'échec : 0

Si la première IP fonctionne, le processus sera le même et il réussira toujours du premier coup.

3voto

adaptr Points 16431

Au lieu de dire aux gens ce que vous ne voulez pas, pourquoi ne pas expliquer ce que vous essayez d'obtenir ?

Si tout ce que vous recherchez, ce sont des données connues, alors allez enquêter vous-même, ou lisez la documentation du navigateur (il y en a des centaines) dont vous parlez.

Cela peut vous aider de savoir que cela n'a rien à voir avec le DNS, cependant.

Lorsqu'un navigateur reçoit une demande, il consulte d'abord ses différents caches pour voir si l'URL, ou si ce n'est pas l'URL, le nom d'hôte, est déjà présent.
Si ce n'est pas le cas, il fera appel au résolveur du système pour résoudre le nom d'hôte.

Si l'adresse IP qu'il reçoit ne répond pas, il la mettra certainement en cache en interne en tant qu'adresse IP. résultat négatif de la recherche Par conséquent, le fait de redemander directement la même URL dans l'espoir de tomber sur un enregistrement A différent ne servira probablement à rien, puisque le nom d'hôte aura été enregistré en même temps que l'adresse IP négative.

Ou, vous savez, vous pourriez fournir plus d'informations.

EDIT : Je vois que vous avez fourni quelques informations entre toutes les demandes et les remarques intelligentes.

Très bien :

  1. Si le navigateur demande un nom d'hôte au résolveur du système, il recevra en retour toutes les informations disponibles sur ce nom d'hôte. Si cela signifie 2 IP, alors il renverra 2 IP.
  2. Cela dépend du navigateur.
  3. Cela dépend du navigateur, mais tous les navigateurs que j'ai utilisés ne font qu'une seule demande, et se terminent après le délai standard de TCP CONNECT() ; je suis presque certain qu'il y a une RFC à ce sujet quelque part...
  4. Cela dépend du navigateur. Cela n'a rien à voir avec le DNS ou le réseau.
  5. No.
  6. No.

Vous semblez également ne pas savoir que les enregistrements DNS sont mis en cache partout, notamment sur les clients. Ces enregistrements expirent, en fonction de ce que le propriétaire du domaine a voulu ou de ce que les caches situés entre vous et lui ont configuré. Une heure à un jour est courant, donc ne vous attendez pas à ce que le résolveur fasse une autre requête DNS si vous appuyez sur rafraîchir comme un fou.

2 votes

J'ai ajouté une explication de ce que j'essaie de faire. Je cherche des données connues, j'espère que quelqu'un les connaît parce que cela peut prendre des jours pour trouver l'information pertinente. Exigeant ? Je demande des informations dont j'ai besoin, je ne peux pas exiger - chacun est libre de répondre ou non. Malin ? J'ai été blessé par votre message et je ne pense pas le mériter.

1 votes

Je ne voulais pas que la discussion se transforme en flamme contre l'équilibrage de la charge DNS. Quoi qu'il en soit, merci de m'avoir indiqué TCP CONNECT().

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X