Comment les navigateurs gèrent plusieurs adresses IP [fermé]

11

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

Je m'intéresse aux détails EXACT, comme (mais sans s'y limiter):

  1. Le navigateur obtiendra-t-il 2 adresses IP du système d'exploitation ou n'en obtiendra-t-il qu'une seule?
  2. Quelle IP le navigateur essaiera-t-il en premier (aléatoire ou toujours le premier)? Maintenant, disons que le navigateur a commencé avec l'IP1 qui a échoué
  3. Pendant combien de temps le navigateur essaiera-t-il ip1?
  4. Si l'utilisateur frappe "stop" pendant qu'il attend ip1, puis clique sur Actualiser
    • quelle IP le navigateur essaiera-t-il?
  5. Que se passera-t-il quand il expirera - commencera-t-il à essayer ip2 ou donnera-t-il une erreur? (Et en cas d'erreur, quelle adresse IP le navigateur essaiera-t-il lorsque l'utilisateur cliquera sur Actualiser).
  6. Lorsque l'utilisateur clique sur Actualiser, un navigateur tentera-t-il une nouvelle recherche DNS?

Supposons maintenant que le navigateur ait d'abord essayé de travailler avec ip2.

  1. Pour la demande de page suivante, le navigateur utilisera-t-il toujours ip2, ou il peut changer aléatoirement les ips?
  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 ips, CONTINUERA-t-il à utiliser la même adresse IP connue, ou le processus recommence à zéro et il peut essayer l'une des deux?

Bien sûr, tout peut dépendre du navigateur et peut également varier entre les versions et les plates-formes, je serais heureux d'avoir le maximum de détails.

Le but de ceci - j'essaie de comprendre exactement ce que les utilisateurs connaîtront lorsque le DNS à tour de rôle est utilisé et que l'un des hôtes échoue.

S'il vous plaît, je ne demande pas à quel point l'équilibrage de la charge DNS est mauvais, et veuillez vous abstenir de répondre "ne le faites pas", "c'est une mauvaise idée", "vous avez besoin d'un battement de coeur / proxy / BGP / quoi que ce soit" et ainsi de suite.

Sandman4
la source
1
Il existe une extension de navigateur pour Firefox qui affiche la ou 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 les demandes IP traitées par. Évidemment, cela ne concerne que Firefox, mais je pense que la console de développement Chrome montre que les demandes IP ont été traitées.
Smudge
Notez également que certains serveurs DNS de FAI ne renverront jamais qu'une seule adresse IP, pourquoi ils le font, je n'en ai aucune idée
Smudge
Merci Sam. Et oui, la console Chrome affiche les recherches DNS, le cache et indique l'IP demandée.
Sandman4
Si vous voulez parler du comportement exact , la première chose à noter sur la façon dont les navigateurs Web traitent les enregistrements est qu'ils ne le font pas . La résolution de noms est gérée par la pile réseau. Alors, essayez-vous de poser des questions sur une bizarrerie de navigateur spécifique que vous avez remarquée ou demandez-vous sur la résolution de noms?
Rob Moir
Les navigateurs reçoivent (à partir de la pile de mise en réseau) plusieurs adresses IP répertoriées dans les enregistrements A pour un nom d'hôte. Dans Google Chrome, essayez chrome: // net-internals / # dns et voyez-vous.
Sandman4

Réponses:

5

Après tout, je devais faire moi-même la "recherche". Voici le comportement de Chromium (version 12.0.742.112) (exécuté sur ubuntu 11.04):

En général, cela fonctionne ainsi: essayez le 1 er IP, une fois qu'il a expiré (après 189 secondes), essayez le 2 e IP. Aucun message d'erreur donné jusqu'à ce que tous les IPS aient essayé. La prochaine connexion recommencera à 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 fiche)

Une chose intéressante - la tentative de connexion TCP n'est pas abandonnée lorsque l'utilisateur clique sur annuler - c'est-à-dire lorsque j'appuie sur annuler, et après 60 secondes cliquez sur réessayer, la page s'affichera dans 130 secondes (189 à partir de la première tentative.) Mais si je clique sur annuler et sur rafraîchir après 190 secondes, le processus recommencera depuis le début.

Concernant les articles de la question d'origine:

  1. Le navigateur obtient les deux IP du système d'exploitation, le système d'exploitation ne change pas l'ordre des IP.
  2. Le navigateur essaie toujours de se connecter à l'IP qui apparaît en premier
  3. Il essaie pendant 189 secondes
  4. Au deuxième essai, il tentera à nouveau la première IP.
  5. Lorsque la première IP expire, le navigateur continue en silence vers la deuxième IP. Si cela fonctionne - la page s'affiche, sinon - l'attente continue.
  6. Pas testé. Ce blog indique que Chrome met en cache DNS pendant un maximum de 1 minute, lorsque nous examinons chrome: // net-internals / # dns:

    Capacité: 100 Durée de vie (ms) pour les entrées de réussite: 60000 Durée 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 à la première tentative.

Sandman4
la source
4

Au lieu de dire aux gens ce que vous ne voulez pas, pourquoi ne pas expliquer ce que vous essayez de réaliser?

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

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

Si un navigateur reçoit une demande, il regarde d'abord dans ses différents caches pour voir si l'URL, ou sinon l'URL puis le nom d'hôte, est déjà présente.
Sinon, il frappera le résolveur système pour résoudre le nom d'hôte.

Si l'IP qu'il récupère ne répond pas, il le mettra certainement en cache en interne en tant que résultat de recherche négative , donc demander directement à nouveau la même URL dans l'espoir d'atteindre un autre enregistrement A ne servira probablement à rien, car il ont stocké le résultat du nom d'hôte avec le résultat IP négatif.

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

EDIT: Je vois que vous avez fourni des informations entre tous les exigeants et smartassery.

Très bien:

  1. Si le navigateur demande au résolveur système un nom d'hôte, il récupérera toutes les informations disponibles pour ce nom d'hôte. Si cela signifie 2 IP, 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 font une seule demande et expireront après le délai d'expiration TCP CONNECT () standard; Je suis assez certain qu'il y a un RFC à ce sujet quelque part ...
  4. Cela dépend du navigateur. Cela n'a rien à voir avec le DNS ou la mise en réseau.
  5. Non.
  6. Non.

Vous semblez également ne pas savoir que les enregistrements DNS sont mis en cache partout, en particulier sur les clients. Ces enregistrements expirent, en fonction de l'intention du propriétaire du domaine ou des caches entre vous et lui configurés. Une heure à un jour est courante, alors ne vous attendez pas à ce que le résolveur fasse une autre requête DNS si vous appuyez sur Actualiser comme un fou.

adaptr
la source
2
Ajout d'une explication de ce que j'essaie de réaliser. Je suis à la recherche de données connues, j'espérais que quelqu'un le sait car cela peut prendre des jours pour trouver les informations pertinentes. Exigeant? Je demande les informations dont j'ai besoin, je ne peux pas demander - tout le monde est libre de répondre ou non. Smartassery? J'ai été blessé par votre message et je ne pense pas que je le mérite.
Sandman4
1
Je ne voulais tout simplement pas que la discussion se transforme en flamme contre l'équilibrage de charge DNS. Quoi qu'il en soit, merci de me diriger vers TCP CONNECT ().
Sandman4