Come i browser gestiscono più IP [chiuso]


11

Qualcuno può indirizzarmi verso informazioni sul comportamento esatto del browser quando il browser ottiene più record A per un determinato nome host (ad esempio ip1 e ip2) e uno di questi non è accessibile.

Mi interessano i dettagli ESATTI, come (ma non limitato a):

  1. Il browser riceverà 2 IP dal sistema operativo o ne avrà solo uno?
  2. Quale ip proverà prima il browser (casuale o sempre il primo)? Ora, supponiamo che il browser sia stato avviato con l'ip1 non riuscito
  3. Per quanto tempo il browser proverà ip1?
  4. Se l'utente preme "stop" mentre attende ip1, quindi fa clic su Aggiorna
    • quale IP proverà il browser?
  5. Cosa succederà quando scade il tempo: inizierà a provare ip2 o darà un errore? (E in caso di errore, quale ip tenterà con il browser quando l'utente fa clic su Aggiorna).
  6. Quando si aggiorna il clic dell'utente, un browser tenterà una nuova ricerca DNS?

Ora supponiamo che il browser abbia provato a funzionare prima con ip2.

  1. Per la richiesta della pagina successiva, il browser continuerà a utilizzare ip2 o potrebbe cambiare ips in modo casuale?
  2. Per quanto tempo i browser mantengono gli IP nella loro cache?
  3. Quando i browser inviano una nuova richiesta DNS e ottengono SAME ips, CONTINUA a utilizzare lo stesso IP conosciuto o funzionante o il processo inizia da zero e può provare uno dei due?

Naturalmente tutto può dipendere dal browser e può anche variare tra versioni e piattaforme, sarei felice di avere il massimo dei dettagli.

Lo scopo di questo: sto cercando di capire esattamente cosa proveranno gli utenti quando si usa il DNS round-robin e uno degli host fallisce.

Per favore, NON sto chiedendo quanto sia cattivo il bilanciamento del carico DNS, e per favore astieniti dal rispondere "non farlo", "è una cattiva idea", "hai bisogno del battito cardiaco / proxy / BGP / qualunque cosa" e così via.


1
Esiste un'estensione del browser per Firefox che mostra gli indirizzi IP e l'indirizzo IP attualmente in uso ( addons.mozilla.org/en-US/firefox/addon/showip/?src=search ). Puoi anche utilizzare la scheda "Rete" di Firebug per mostrare che le richieste IP sono state soddisfatte. Ovviamente questo è rilevante solo per Firefox, ma credo che la console di sviluppo di Chrome mostri che le richieste IP sono state soddisfatte.
Macchia

Si noti inoltre che alcuni server DNS dell'ISP restituiranno sempre e solo un indirizzo IP, perché non lo fanno
Smudge

Grazie Sam. E sì, la console Chrome mostra ricerche DNS, cache e mostra quale IP è richiesto.
Sandman4,

Se vuoi parlare del comportamento esatto , la prima cosa da notare su come i browser web gestiscono un record è che non lo fanno . La risoluzione dei nomi è gestita dallo stack di rete. Quindi stai cercando di chiedere qualche stranezza specifica del browser che hai notato o stai chiedendo la risoluzione dei nomi?
Rob Moir,

I browser ricevono (dallo stack di rete) più IP elencati in record A per un nome host. In Google Chrome, prova chrome: // net-internals / # dns e vedi te stesso.
Sandman4,

Risposte:


5

Dopotutto, ho dovuto fare da solo la "ricerca". Ecco il comportamento di Chromium (versione 12.0.742.112) (in esecuzione su Ubuntu 11.04):

Generalmente funziona in questo modo: prova 1-ip, una volta scaduto (dopo 189 sec.) Prova 2-ip. Nessun messaggio di errore dato fino a quando tutti ips hanno provato. La prossima connessione ricomincerà dal primo ip (anche se ha appena fallito un secondo fa e il secondo ip ha funzionato - al browser non importa

Una cosa interessante - il tentativo di connessione TCP non viene interrotto quando l'utente preme Annulla - cioè quando premo Annulla e dopo 60 secondi clic su Riprova, la pagina verrà visualizzata in 130 secondi (189 dal primo tentativo). Ma se faccio clic su Annulla e clic aggiorna dopo 190 secondi, il processo inizierà dall'inizio.

Per quanto riguarda gli articoli nella domanda originale:

  1. Il browser ottiene entrambi gli IP dal sistema operativo, il sistema operativo non cambia l'ordine degli IP.
  2. Il browser cerca sempre di connettersi all'ip che appare per primo
  3. Prova per 189 secondi
  4. Al secondo tentativo, proverà di nuovo il primo IP.
  5. Al timeout del primo IP, il browser continua silenziosamente al secondo IP. Se funziona - la pagina viene visualizzata, in caso contrario - l'attesa continua.
  6. Non testato. Questo blog afferma che Chrome memorizza nella cache DNS per un massimo di 1 minuto, quando guardiamo chrome: // net-internals / # dns:

    Capacità: 100 Tempo di permanenza (ms) per voci riuscite: 60000 Tempo di permanenza (ms) per voci non riuscite: 0

Se il primo IP funziona, il processo sarà lo stesso e avrà sempre successo al primo tentativo.


4

Invece di dire alla gente ciò che non vuoi, perché non spiegare cosa stai cercando di ottenere?

Se tutto ciò che cerchi sono dati noti, allora vai a investigare te stesso o leggi la documentazione di qualsiasi browser (ce ne sono centinaia) di cui stai parlando.

Tuttavia, potrebbe essere utile sapere che ciò non ha nulla a che fare con il DNS.

Se un browser riceve una richiesta, prima cerca nelle sue varie cache per vedere se l'URL, o se non l'URL, quindi il nome host, è già presente.
In caso contrario, colpirà il resolver di sistema per risolvere il nome host.

Se l'IP che restituisce non risponde, sicuramente memorizzerà questa cache internamente come risultato di una ricerca negativa , quindi richiedere di nuovo direttamente lo stesso URL nella speranza di colpire un record A diverso probabilmente non servirà a nulla, dal momento che lo farà hanno memorizzato il risultato del nome host insieme al risultato IP negativo.

Oppure, sai, potresti fornire maggiori informazioni.

EDIT: Vedo che hai fornito alcune informazioni tra tutte le esigenti e smartassery.

Ottimo:

  1. Se il browser chiede al resolver di sistema un nome host, recupererà qualsiasi informazione ci sia per quel nome host. Se ciò significa 2 IP, restituirà 2 IP.
  2. Dipende dal browser.
  3. Dipende dal browser, ma tutti i browser che ho mai usato fanno una singola richiesta e scadranno dopo il timeout standard TCP CONNECT (); Sono abbastanza sicuro che ci sia un RFC da qualche parte ...
  4. Dipende dal browser. Non ha nulla a che fare con DNS o reti.
  5. No.
  6. No.

Sembra anche che tu non sappia che i record DNS vengono memorizzati nella cache ovunque, specialmente sui client. Questi record scadono, a seconda di cosa intendeva il proprietario del dominio o delle cache tra te e lui configurate. Un'ora o un giorno è comune, quindi non aspettarti che il risolutore esegua un'altra query DNS se premi refresh come un pazzo.


2
Aggiunta spiegazione di ciò che sto cercando di ottenere. Sto cercando dati noti, speravo che qualcuno lo sapesse perché potrebbero essere necessari giorni per trovare le informazioni pertinenti. Esigente? Sto chiedendo le informazioni di cui ho bisogno, non posso chiedere - ognuno è libero di rispondere o no. Smartassery? Ho ferito il tuo post e non credo di meritarlo.
Sandman4,

1
Non volevo che la discussione si trasformasse in fiamma contro il bilanciamento del carico DNS. Comunque, grazie per avermi indicato TCP CONNECT ().
Sandman4,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.