Wie Browser mit mehreren IPs umgehen [geschlossen]

11

Kann mich jemand zu Informationen über das genaue Verhalten des Browsers weiterleiten, wenn der Browser mehrere A-Datensätze für einen bestimmten Hostnamen (z. B. ip1 und ip2) erhält und auf einen von ihnen nicht zugegriffen werden kann?

Ich interessiere mich für GENAUE Details, wie (aber nicht beschränkt auf):

  1. Bekommt der Browser 2 IPs vom Betriebssystem oder nur eine?
  2. Welche IP wird der Browser zuerst versuchen (zufällig oder immer die erste)? Angenommen, der Browser wurde mit der fehlgeschlagenen IP1 gestartet
  3. Wie lange wird der Browser ip1 ausprobieren?
  4. Wenn der Benutzer "Stopp" drückt, während er auf ip1 wartet, und dann auf "Aktualisieren" klickt
    • Welche IP wird der Browser versuchen?
  5. Was passiert, wenn das Zeitlimit überschritten wird - wird es IP2 versuchen oder einen Fehler geben? (Und wenn Fehler, welche IP wird Browser versuchen, wenn Benutzer auf Aktualisieren klickt).
  6. Wenn ein Benutzer auf Aktualisieren klickt, versucht ein Browser eine neue DNS-Suche?

Nehmen wir nun an, der Browser hat zuerst versucht, IP2 zu verwenden.

  1. Verwendet der Browser für die nächste Seitenanforderung weiterhin ip2 oder wechselt er zufällig die ips?
  2. Wie lange behalten Browser IPs in ihrem Cache?
  3. Wenn Browser eine neue DNS-Anfrage senden und die gleichen IP-Adressen erhalten, wird sie dann weiterhin dieselbe IP verwenden, von der bekannt ist, dass sie funktioniert, oder der Prozess beginnt von vorne und versucht möglicherweise eine der beiden?

Natürlich kann alles browserabhängig sein und auch zwischen Versionen und Plattformen variieren. Ich würde mich über ein Maximum an Details freuen.

Der Zweck davon - Ich versuche zu verstehen, was genau Benutzer erleben werden, wenn Round-Robin-DNS verwendet wird und einer der Hosts ausfällt.

Bitte, ich frage NICHT, wie schlecht der DNS-Lastenausgleich ist, und bitte antworten Sie nicht mit "Nicht tun", "Es ist eine schlechte Idee", "Sie brauchen Heartbeat / Proxy / BGP / was auch immer" und so weiter.

Sandman4
quelle
1
Es gibt eine Browser-Erweiterung für Firefox, die die IP-Adresse (n) sowie die derzeit verwendete IP-Adresse anzeigt ( addons.mozilla.org/en-US/firefox/addon/showip/?src=search ). Sie können auch die Registerkarte "Net" von Firebug verwenden, um die IP-Anforderungen anzuzeigen, von denen sie bedient wurden. Offensichtlich ist dies nur für Firefox relevant, aber ich glaube, die Chrome-Entwicklungskonsole zeigt an, dass die IP-Anforderungen von bedient wurden.
Smudge
Beachten Sie auch, dass einige DNS-Server von ISPs immer nur eine IP-Adresse zurückgeben. Warum sie dies tun, weiß ich nicht
Smudge
Danke Sam. Und ja, die Chrome-Konsole zeigt DNS-Lookups, Cache und welche IP angefordert wird.
Sandman4
Wenn Sie über das genaue Verhalten sprechen möchten, sollten Sie zunächst feststellen, wie Webbrowser mit Datensätzen umgehen, dass dies nicht der Fall ist . Die Namensauflösung wird vom Netzwerkstapel übernommen. Versuchen Sie also, nach einer bestimmten Browser-Kuriosität zu fragen, die Sie bemerkt haben, oder fragen Sie nach der Namensauflösung?
Rob Moir
Browser empfangen (vom Netzwerkstapel) mehrere IP-Adressen, die in A-Datensätzen für einen Hostnamen aufgeführt sind. Versuchen Sie in Google Chrome chrome: // net-internals / # dns und überzeugen Sie sich selbst.
Sandman4

Antworten:

5

Immerhin musste ich die "Forschung" selbst machen. Hier ist das Verhalten von Chromium (Version 12.0.742.112) (läuft unter Ubuntu 11.04):

Im Allgemeinen funktioniert es so: Versuchen Sie es mit der 1. IP. Versuchen Sie nach Ablauf der Zeit (nach 189 Sek.) Die 2. IP. Keine Fehlermeldungen, bis alle ips versucht haben. Die nächste Verbindung wird wieder von der ersten IP gestartet (auch wenn sie erst vor einer Sekunde fehlgeschlagen ist und die zweite IP funktioniert hat - Browser ist das egal)

Eine interessante Sache: Der TCP-Verbindungsversuch wird nicht abgebrochen, wenn der Benutzer auf Abbrechen klickt - dh wenn ich auf Abbrechen drücke und nach 60 Sekunden auf Wiederholen klicken, wird die Seite in 130 Sekunden angezeigt (189 vom ersten Versuch an). Wenn ich jedoch auf Abbrechen klicke und auf klicke refresh nach 190 Sekunden, wird der Prozess von Anfang an beginnen.

Zu den Artikeln in der Originalfrage:

  1. Der Browser erhält beide IPs vom Betriebssystem. Das Betriebssystem ändert die Reihenfolge der IPs nicht.
  2. Der Browser versucht immer , eine Verbindung zu der zuerst angezeigten IP-Adresse herzustellen
  3. Es versucht für 189 Sekunden
  4. Beim zweiten Versuch wird die erste IP erneut versucht.
  5. Beim ersten IP-Timeout fährt der Browser stillschweigend mit der zweiten IP fort. Wenn es funktioniert - die Seite wird angezeigt, wenn nicht - wird weiter gewartet.
  6. Nicht getestet. In diesem Blog wird angegeben , dass Chrome DNS nur für bis zu 1 Minute zwischenspeichert, wenn wir uns chrome: // net-internals / # dns: ansehen.

    Kapazität: 100 Lebensdauer (ms) für erfolgreiche Einträge: 60000 Lebensdauer (ms) für Fehlereinträge: 0

Wenn die erste IP funktioniert, ist der Prozess derselbe und beim ersten Versuch immer erfolgreich.

Sandman4
quelle
4

Anstatt den Leuten zu sagen, was Sie nicht wollen, warum nicht erklären, was Sie erreichen wollen?

Wenn Sie nur nach bekannten Daten suchen, untersuchen Sie sich selbst oder lesen Sie die Dokumentation des Browsers (es gibt Hunderte), über den Sie sprechen.

Es kann Ihnen jedoch helfen zu wissen, dass dies nichts mit DNS zu tun hat.

Wenn ein Browser eine Anfrage erhält, prüft er zunächst in seinen verschiedenen Caches, ob die URL oder, falls nicht, der Hostname bereits vorhanden ist.
Wenn nicht, wird der Systemauflöser getroffen, um den Hostnamen aufzulösen.

Wenn die IP, die es zurückerhält, nicht antwortet, wird dies mit Sicherheit intern als negatives Suchergebnis zwischengespeichert. Wenn Sie also dieselbe URL erneut direkt anfordern, in der Hoffnung, einen anderen A-Datensatz dafür zu finden, hat dies wahrscheinlich keinen Zweck, da dies der Fall ist habe das Hostnamen-Ergebnis zusammen mit dem negativen IP-Ergebnis gespeichert.

Oder Sie könnten weitere Informationen bereitstellen.

EDIT: Ich sehe, Sie haben einige Informationen zwischen all den anspruchsvollen und klugen Arbeiten geliefert.

Sehr gut:

  1. Wenn der Browser den Systemauflöser nach einem Hostnamen fragt, erhält er alle Informationen zurück, die für diesen Hostnamen vorhanden sind. Wenn dies 2 IPs bedeutet, werden 2 IPs zurückgegeben.
  2. Das hängt vom Browser ab.
  3. Das hängt vom Browser ab, aber alle Browser, die ich jemals verwendet habe, führen eine einzelne Anforderung aus und treten nach dem Standard-Timeout von TCP CONNECT () eine Zeitüberschreitung auf. Ich bin mir ziemlich sicher, dass es irgendwo einen RFC gibt ...
  4. Das hängt vom Browser ab. Es hat nichts mit DNS oder Netzwerk zu tun.
  5. Nein.
  6. Nein.

Sie scheinen auch nicht zu wissen, dass DNS-Einträge überall zwischengespeichert werden, insbesondere auf Clients. Diese Datensätze verfallen, je nachdem, was der Domaininhaber beabsichtigt hat oder welche Caches zwischen Ihnen und ihm konfiguriert wurden. Eine Stunde bis ein Tag ist üblich. Erwarten Sie also nicht, dass der Resolver eine weitere DNS-Abfrage ausführt, wenn Sie wie ein Verrückter auf Aktualisieren klicken.

adaptr
quelle
2
Erklärung hinzugefügt, was ich erreichen möchte. Ich bin nach bekannten Daten, ich hoffte jemand weiß, weil es Tage dauern kann, um die relevanten Informationen zu finden. Anspruchsvoll ? Ich bitte um Informationen, die ich brauche, ich kann nicht verlangen - jeder kann antworten oder nicht. Smartassery? Ihr Beitrag hat mich verletzt und ich glaube nicht, dass ich ihn verdient habe.
Sandman4
1
Ich wollte nur nicht, dass die Diskussion gegen den DNS-Lastausgleich in Flammen aufsteigt. Wie auch immer, danke, dass Sie mich auf TCP CONNECT () hingewiesen haben.
Sandman4