Tak, większość przeglądarek z ostatnich 5-10 lat wypróbuje inne rekordy A, jeśli jedna nie zareaguje. Czasami nazywa się to „ponawianiem przeglądarki” lub „ponawianiem klienta”. Prawie można znaleźć na ten temat tylko w kontekście różnych exploitów przeglądarki, które ta funkcja umożliwia przeciwko stronom, które go nie używają (patrz Ponowne wiązanie DNS i przypinanie DNS , zapobieganie przypinaniu dns, przeciwdziałanie dns, przeciwdziałanie -anti-dns przypinanie itd.). Niby zła reputacja, ale dowodzi, że istnieje.
Prawie każda przeglądarka rzeczywiście otrzymuje pełną listę rekordów A i rzeczywiście sprawdza inne, jeśli ta, której używa, zawiedzie. Możesz oczekiwać, że każdy klient będzie miał 30 sekund oczekiwania, kiedy po raz pierwszy spróbuje uzyskać dostęp do witryny, gdy serwer jest wyłączony, dopóki nie połączy się z działającym adresem. Przeglądarka następnie zapisze w pamięci podręcznej, który adres działa i będzie go używać do przyszłych żądań, chyba że również się nie powiedzie, a następnie będzie musiała ponownie przeszukać listę. Tak więc 30 sekund oczekiwania na pierwsze żądanie, później grzywna.
Ale nie jest to coś, czego niekoniecznie chcesz użyć, będzie miało wiele zastrzeżeń dotyczących kompatybilności przeglądarki, kompatybilności z systemem operacyjnym, kompatybilności proxy, nagłówki kontroli pamięci podręcznej będą miały dziwny wpływ na to, czy pamięta, które adresy IP są wyłączone, czy zaczyna mieć że 30 sekund oczekiwania na każde żądanie, ludzie piszący niestandardowych klientów dla Twojej witryny będą używać gethostbyname zamiast getaddrinfo i nie będą w stanie obsłużyć przełączenia awaryjnego, wszelkiego rodzaju potencjalnych problemów.
Nie można również polegać na wielu rekordach A, aby zezwolić na serwery „master” i „slave”, ponieważ nigdy nie wiadomo, który adres przeglądarka wybierze z listy. Wszystkie muszą być tak samo zdolne do obsługi odwiedzających, jeśli są uruchomione, ponieważ każdy może uzyskać ruch, jeśli jest włączony. Przeglądarka może pomyśleć, że twój trzeci serwer z listy jest najbardziej atrakcyjny, może wygląda najbliżej i wybierze ten, mimo że wszystkie trzy są nadal aktywne.
Ale jeśli możesz żyć z ograniczeniami i mieć dość prosty system HTTP, z którym możesz przewidzieć interakcję przeglądarki, zadziała.
Och, będziesz musiał poradzić sobie również z wieloma ludźmi, którzy mówią ci, że to nie istnieje (ponieważ było to prawdą 15 lat temu). Ale możesz spróbować telnetowania do nazwy domeny z kilkoma rekordami A, niektóre z martwymi adresami IP i kilka dobrych, jeśli chcesz to udowodnić (tak, nawet dobry stary telnet używa teraz getaddrinfo i z wdziękiem obsługuje wiele rekordów A) - wydrukuje ładną listę adresów IP, które próbuje, aż w końcu się powiedzie.
Ostrzegam, że Windows Vista implementuje głupie części RFC3484 (tj. Backporting z IPV6 na IPV4) i woli adres IP, który dzieli większość bitów prefiksu z adresem IP użytkownika, zamiast wybierać jeden losowo. Ponieważ większość użytkowników ma adresy IP zaczynające się od 192.168, oznacza to, że którykolwiek z twoich adresów IP podzieli większość bitów prefiksu, co spowoduje większy ruch w systemie Vista. Microsoft naprawił ten konkretny idiotyzm w systemie Windows 7 i nowszych, więc nie jest to tak duży problem, jak kiedyś.
źródło
Jest to podstawowa technika dystrybucji równoważenia obciążenia DNS: DNS Round Robin. Nie ma to nic wspólnego z przeglądarką, zależy to od implementacji resolvera oraz lokalnej / zdalnej pamięci podręcznej adresu DNS. Zmiany polegają na tym, że jeśli serwer zawiedzie, z powodu buforowania w warstwie DNS Twoja witryna może być niedostępna.
Zobacz tutaj podstawowe wyjaśnienie dotyczące Round Robin DNS na WikiPedia.
źródło
nslookup cnn.com
w systemie Windows, jak ihost cnn.com
Linux zwraca listę adresów IP, więc na pewno zależy to od implementacji przeglądarki .System operacyjny określa, którego adresu IP użyć, a nie przeglądarki. Windows zaokrągli robin zwróconą listę (na liście zwróconej z DNS), ale będzie nadal używać tego samego adresu, dopóki DNS nie zostanie opróżniony lub upłynie limit czasu. * Implementacje IX zależą częściowo od dołączonej implementacji stosu TCP, ale zwykle również stosują metodę Round Robin.
źródło
InetAddress.getAllByName("example.com")
, otrzymam listę ze wszystkimi adresami IP, więc mogę wybrać połączenie TCP z wszystkimi z nich, jeśli chcę. I to samo, jeśli używaszgetaddrinfo()
w C. Więc jest to zdecydowanie wybór, który robią programiści, a nie system operacyjny. Serwer DNS decyduje tylko w jakiej kolejności zwracana jest lista adresów IP.