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):
- Czy przeglądarka otrzyma 2 adresy IP z systemu operacyjnego, czy otrzyma tylko jeden?
- 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
- Jak długo przeglądarka wypróbuje ip1?
- 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?
- 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ż).
- 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.
- Czy w przypadku żądania następnej strony przeglądarka będzie nadal korzystać z protokołu ip2, czy może losowo przełączać ips?
- Jak długo przeglądarki przechowują adresy IP w pamięci podręcznej?
- 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.
źródło
Odpowiedzi:
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:
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.
źródło
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:
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.
źródło