Odpowiedzi:
Pierwszą rzeczą, którą określa klient, są dostępne protokoły. Załóżmy, że zarówno IPv4, jak i IPv6 są dostępne (w przeciwnym razie odpowiedź na wybór protokołu jest trywialna;) Następnie przeszuka DNS zarówno dla rekordów A (adres IPv4), jak i AAAA (adres IPv6). Jeśli zostanie zwrócony tylko jeden typ, użyje go. Jeśli zwracane są zarówno adresy IPv4, jak i IPv6, zachowanie domyślne zależy nieco od oprogramowania klienta. Zwykle stosuje się RFC 3484 .
Zgodnie z oficjalnymi standardami powinien preferować IPv6, ale ponieważ niektóre (0,01% lub mniej) maszyny mają źle skonfigurowaną IPv6, klienci stali się mądrzejsi. Większość przeglądarek w tych dniach będzie próbowała połączyć się przez IPv6, ale jeśli nie uzyskają działającego połączenia w ciągu 300 milisekund, spróbują połączyć się równolegle przez IPv4. Następnie używane jest pierwsze połączenie, które się powiedzie. Jest to opisane w dokumencie Happy Eyeballs RFC .
Apple zmieniło to w Lion. Tam system operacyjny faktycznie śledzi wydajność wszystkich połączeń, a jeśli stwierdzi, że połączenie IPv4 ma mniejsze opóźnienie niż połączenie IPv6, zacznie preferować IPv4. Ale jeśli połączenie IPv4 stanie się wolniejsze, może wrócić do IPv6. Spójrz na ten wątek listy dyskusyjnej, aby omówić tę funkcję.
Dla użytkownika nie powinno mieć znaczenia, czy używany jest IPv4 czy IPv6, o ile działa. IPv4 i IPv6 powinny być dostarczane równie dobrze. Strony internetowe powinny działać dokładnie tak samo w przypadku IPv4, jak i IPv6 itp.
IPv4 pozostanie używany przez wiele lat. Stanie się bezużyteczny, gdy nowe usługi (strony internetowe, gry itp.) Zostaną wdrożone tylko przez IPv6, ponieważ nie będzie już nowych adresów IPv4. W pewnym momencie wszystko, co działa przez IPv4, będzie działało również przez IPv6. W tym momencie wyłączenie IPv4 pozwoli zaoszczędzić czas i pieniądze (po co utrzymywać dwa protokoły, jeśli wystarczy?).
apt-get update
na przykład próbuje się połączyć z hostami ipv6, ale sam host nie ma nawet adresu IPv6, oprócz adresu lokalnego dla łącza.
Używany obecnie etap pośredni jest nazywany tunelowaniem. Zasadniczo pakiety IPv6 podróżują wewnątrz pakietów IPv4, dopóki nie osiągną punktu, w którym można je pozbawić enkapsulacji IPv4 i wysłać drugą stronę w pełnej sieci IPv6. Oczywiście jest o wiele bardziej złożona, ale podstawowa koncepcja jest ogólnie taka sama.
W miarę jak coraz więcej urządzeń staje się zdolnych do obsługi IPv6, a ludzie coraz lepiej zapoznają się z używaniem adresów, IPv6 będzie coraz częściej używane. Nie sądzę (osobista opinia), że IPv6 naprawdę zostanie przyjęty i zobaczę wprowadzenie na dużą skalę w małych i średnich firmach i na rynku osobistym, dopóki przestrzeń IPv4 nie stanie się drogim towarem.
W pewnym momencie w dość odległej przyszłości, gdy IPv6 obsługuje przeważającą większość ruchu, widziałem odwrócenie losu dla IPv4, gdzie ruch IPv4 musi być zamknięty w zwykłych pakietach IPv6, a brokerzy tuneli pełnią podobną (ale odwróconą) rolę z powodu brak szerokiego przypisania / routingu IPv4.
Myślę, że pytasz, jak aplikacja decyduje, jak wybrać. Od strony programu zależy to od implementacji aplikacji. Jeśli na przykład program kodujący nadaje IPv6 wyższy priorytet niż IPv4, najpierw spróbuje użyć getipv6addr (). Jeśli jest to nieskonfigurowane lub nie powiedzie się, spróbuje użyć getaddr () itp. Na tej podstawie aplikacja wyśle najpierw żądanie przez IPv6 lub odwrotnie.