Jak przeglądarki obsługują wiele adresów IP [zamknięte]

11

Czy ktoś może skierować mnie do informacji o dokładnym zachowaniu przeglądarki, gdy przeglądarka otrzyma wiele rekordów A dla danej nazwy hosta (powiedzmy ip1 i ip2), a jeden z nich jest niedostępny.

Interesują mnie DOKŁADNE szczegóły, takie jak (ale nie tylko):

  1. Czy przeglądarka otrzyma 2 adresy IP z systemu operacyjnego, czy otrzyma tylko jeden?
  2. Który adres IP spróbuje najpierw przeglądarka (losowa lub zawsze pierwsza)? Załóżmy teraz, że przeglądarka uruchomiła się z nieudanym IP1
  3. Jak długo przeglądarka wypróbuje ip1?
  4. Jeśli użytkownik kliknie „zatrzymaj”, gdy czeka na ip1, a następnie kliknie odśwież
    • który adres IP spróbuje w przeglądarce?
  5. Co się stanie, gdy upłynie limit czasu - czy zacznie próbować ip2 czy da błąd? (A jeśli błąd, który adres IP spróbuje przeglądarka, gdy użytkownik kliknie odśwież).
  6. Czy po odświeżeniu kliknięcia przez użytkownika przeglądarka podejmie próbę nowego wyszukiwania DNS?

Załóżmy teraz, że przeglądarka najpierw spróbowała działać na ip2.

  1. Czy w przypadku żądania następnej strony przeglądarka będzie nadal korzystać z protokołu ip2, czy może losowo przełączać ips?
  2. Jak długo przeglądarki przechowują adresy IP w pamięci podręcznej?
  3. Gdy przeglądarki wyślą nowe żądanie DNS i otrzymają SAMY ips, czy KONTYNUUJE użyć tego samego znanego, działającego adresu IP, czy proces rozpocznie się od zera i może wypróbować jedno z dwóch?

Oczywiście wszystko może zależeć od przeglądarki, a także może różnić się w zależności od wersji i platformy, chętnie przedstawię maksimum szczegółów.

Cel tego - staram się zrozumieć, co dokładnie użytkownicy będą odczuwać, gdy użyjemy okrężnego systemu DNS i jeden z hostów ulegnie awarii.

Proszę, NIE pytam o to, jak złe jest równoważenie obciążenia DNS, i proszę powstrzymać się od odpowiedzi „nie rób tego”, „to zły pomysł”, „potrzebujesz bicia serca / proxy / BGP / cokolwiek” i tak dalej.

Sandman4
źródło
1
Istnieje rozszerzenie przeglądarki Firefox, które pokazuje adresy IP, a także adres IP, który jest obecnie używany ( addons.mozilla.org/en-US/firefox/addon/showip/?src=search ). Możesz także użyć zakładki „Net” Firebuga, aby pokazać, że żądania IP zostały obsłużone. Oczywiście dotyczy to tylko Firefoksa, ale wierzę, że konsola programistów Chrome pokazuje, że żądania IP zostały obsłużone.
Smudge
Zauważ też, że niektóre serwery DNS niektórych dostawców usług internetowych zwrócą tylko jeden adres IP, dlaczego to robią, nie mam pojęcia
Smudge
Dzięki Sam. I tak, konsola chrome pokazuje wyszukiwania DNS, pamięć podręczną i pokazuje, który adres IP jest wymagany.
Sandman4,
Jeśli chcesz porozmawiać o dokładnym zachowaniu, pierwszą rzeczą, na którą należy zwrócić uwagę w jaki sposób przeglądarki internetowe radzą sobie z danymi, jest to, że nie . Rozpoznawanie nazw jest obsługiwane przez stos sieciowy. Próbujesz więc zapytać o jakąś zauważoną dziwność przeglądarki, czy pytasz o rozpoznawanie nazw?
Rob Moir,
Przeglądarki NIE odbierają (ze stosu sieciowego) wielu adresów IP wymienionych w rekordach A dla nazwy hosta. W przeglądarce Google Chrome wypróbuj chrome: // net-internals / # dns i przekonaj się sam.
Sandman4,

Odpowiedzi:

5

W końcu musiałem sam przeprowadzić „badania”. Oto zachowanie Chromium (wersja 12.0.742.112) (działające na Ubuntu 11.04):

Ogólnie działa to tak: spróbuj 1-szego ip, gdy upłynie limit czasu (po 189 sekundach), spróbuj 2-szego ip. Brak komunikatów o błędach, dopóki wszystkie IP nie spróbują. Następne połączenie zacznie się ponownie od pierwszego adresu IP (nawet jeśli przed chwilą nie powiodło się, a drugi adres IP działał - przeglądarki to nie obchodzi)

Jedna interesująca rzecz - próba połączenia TCP nie jest przerywana, gdy użytkownik kliknie przycisk Anuluj - tj. Kiedy kliknę przycisk Anuluj, a po 60 sekundach klikniesz przycisk Ponów, strona pojawi się za 130 sekund (189 od pierwszej próby). Ale jeśli kliknę przycisk Anuluj i kliknę Odśwież po 190 sekundach, proces rozpocznie się od początku.

Odnośnie elementów w oryginalnym pytaniu:

  1. Przeglądarka pobiera oba adresy IP z systemu operacyjnego, system operacyjny nie zmienia kolejności adresów IP.
  2. Przeglądarka zawsze próbuje połączyć się z ip, który pojawia się jako pierwszy
  3. Próbuje przez 189 sekund
  4. Przy drugiej próbie spróbuje ponownie pierwszego adresu IP.
  5. Gdy upłynie limit czasu pierwszego adresu IP, przeglądarka po cichu przechodzi do drugiego adresu IP. Jeśli to działa - strona się wyświetla, jeśli nie - czekanie trwa.
  6. Nie testowany. Ten blog stwierdza, że ​​Chrome buforuje DNS tylko przez 1 minutę, gdy spojrzymy na chrome: // net-internals / # dns:

    Pojemność: 100 Czas do życia (ms) dla wpisów sukcesów: 60000 Czas do życia (ms) dla wpisów błędów: 0

Jeśli pierwsze IP zadziała, proces będzie taki sam i zawsze zakończy się sukcesem przy pierwszej próbie.

Sandman4
źródło
4

Zamiast mówić ludziom, czego nie chcesz, dlaczego nie wyjaśnić, co próbujesz osiągnąć?

Jeśli szukasz tylko znanych danych, sprawdź sam lub zapoznaj się z dokumentacją dowolnej przeglądarki (setki), o której mówisz.

Może ci jednak pomóc wiedzieć, że nie ma to nic wspólnego z DNS.

Jeśli przeglądarka otrzyma żądanie, najpierw sprawdza w różnych pamięciach podręcznych, czy adres URL, a jeśli nie, to nazwa hosta, jest już obecna.
Jeśli nie, uderzy w resolver systemu, aby rozwiązać nazwę hosta.

Jeśli adres IP, który odzyskuje, nie odpowiada, z pewnością buforuje to wewnętrznie jako negatywny wynik wyszukiwania , więc bezpośrednie żądanie tego samego adresu URL ponownie w nadziei, że trafi on do innego rekordu A, prawdopodobnie nie przyniesie żadnego celu, ponieważ będzie przechowują wynik nazwy hosta wraz z ujemnym wynikiem IP.

Lub, wiesz, możesz podać więcej informacji.

EDYCJA: Widzę, że podałeś jakieś informacje pomiędzy wszystkimi wymagającymi a inteligentnymi.

Bardzo dobrze:

  1. Jeśli przeglądarka poprosi systemowy resolver o nazwę hosta, odzyska wszelkie informacje dotyczące tej nazwy hosta. Jeśli to oznacza 2 adresy IP, zwróci 2 adresy IP.
  2. To zależy od przeglądarki.
  3. To zależy od przeglądarki, ale wszystkie przeglądarki, z których kiedykolwiek korzystałem, wysyłają pojedyncze żądanie i przekroczą limit czasu po upływie standardowego limitu czasu TCP CONNECT (); Jestem całkiem pewien, że gdzieś w tym jest RFC ...
  4. To zależy od przeglądarki. Nie ma to nic wspólnego z DNS ani siecią.
  5. Nie.
  6. Nie.

Wydaje się również, że nie wiesz, że rekordy DNS są buforowane wszędzie, szczególnie na klientach. Te rekordy wygasają, w zależności od zamiarów właściciela domeny lub konfiguracji pamięci podręcznej między tobą a nim. Jedna godzina do jednego dnia jest powszechna, więc nie oczekuj, że resolver wykona kolejne zapytanie DNS, jeśli odświeżysz się jak szaleniec.

adapttr
źródło
2
Dodano wyjaśnienie tego, co próbuję osiągnąć. Chcę poznać znane dane, miałem nadzieję, że ktoś to wie, ponieważ znalezienie odpowiednich informacji może zająć kilka dni. Wymagające ? Proszę o informacje, których potrzebuję, nie mogę żądać - każdy może odpowiedzieć lub nie. Smartassery? Boli mnie twój post i nie sądzę, żebym na to zasłużył.
Sandman4,
1
Po prostu nie chciałem, aby dyskusja zmieniła się w płomień przeciwko równoważeniu obciążenia DNS. W każdym razie dzięki za wskazanie mi TCP CONNECT ().
Sandman4,