Woher wissen Clientanwendungen, dass sie IPv4 oder IPv6 verwenden?


18

Woher wissen Server / Computer / Benutzer / Anwendungen, dass sie eine Ressource über das Internet mit einer IPv6-Adresse im Vergleich zu einer IPv4-Adresse anfordern können?

Antworten:


24

Der Client bestimmt zunächst, welche Protokolle verfügbar sind. Nehmen wir an, dass sowohl IPv4 als auch IPv6 verfügbar sind (ansonsten ist die Antwort auf das zu wählende Protokoll trivial;). Anschließend wird eine DNS-Suche für die Einträge A (IPv4-Adresse) und AAAA (IPv6-Adresse) durchgeführt. Wenn nur ein Typ zurückgegeben wird, wird dieser verwendet. Wenn sowohl IPv4- als auch IPv6-Adressen zurückgegeben werden, hängt das Standardverhalten ein wenig von der Clientsoftware ab. Normalerweise wird RFC 3484 verwendet.

Gemäß den offiziellen Standards sollte IPv6 bevorzugt werden. Da jedoch einige (0,01% oder weniger) Computer IPv6 falsch konfiguriert haben, sind die Clients intelligenter geworden. Die meisten Browser versuchen heutzutage, eine Verbindung über IPv6 herzustellen. Wenn sie jedoch innerhalb von 300 Millisekunden keine funktionierende Verbindung erhalten, versuchen sie, eine Verbindung über IPv4 parallel herzustellen. Die erste Verbindung, die erfolgreich ist, wird dann verwandt. Dies wird im RFC "Happy Eyeballs" behandelt .

Apple hat dies in Lion geändert. Dort verfolgt das Betriebssystem tatsächlich die Leistung aller Verbindungen. Wenn es feststellt, dass die IPv4-Verbindung eine geringere Latenz aufweist als die IPv6-Verbindung, wird IPv4 bevorzugt. Wenn die IPv4-Verbindung jedoch langsamer wird, wird möglicherweise wieder auf IPv6 umgeschaltet. Schauen Sie sich diesen Mailinglisten-Thread an, um eine Diskussion über diese Funktion zu erhalten.

Für den Benutzer sollte es egal sein, ob IPv4 oder IPv6 verwendet wird, solange es funktioniert. IPv4 und IPv6 sollten gleich gut bereitgestellt werden. Websites sollten über IPv4 genauso funktionieren wie über IPv6 usw.

IPv4 wird noch viele Jahre verwendet. Es wird unbrauchbar, sobald neue Dienste (Websites, Spiele usw.) nur über IPv6 bereitgestellt werden, da keine neuen IPv4-Adressen mehr verwendet werden müssen. Und irgendwann funktioniert alles, was über IPv4 funktioniert, auch über IPv6. Zu diesem Zeitpunkt spart das Deaktivieren von IPv4 Zeit und Geld (warum sollten zwei Protokolle beibehalten werden, wenn eines ausreicht?).


1
Nachdem dies geschrieben wurde, wurde RFC 3484 von RFC 6724 veraltet .
Michael Hampton

Wie wird festgestellt, welche Protokolle verfügbar sind? Ich habe zufälliges Verhalten beobachtet, bei dem apt-get updatebeispielsweise versucht wird, eine Verbindung zu IPv6-Hosts herzustellen, der Host selbst jedoch abgesehen von seiner verbindungslokalen IPv6-Adresse nicht über eine IPv6-Adresse verfügt.
Halfgaar

1
Dies erfolgt über die Auswahl der Quell- und Zieladresse (RFC 6724). In Ihrem Fall scheint der Host den AAAA-Eintrag in DNS zu sehen, wählt diese Zieladresse aus, stellt dann fest, dass er keine Quelladresse hat, die er mit diesem Ziel verwenden kann, und greift dann auf IPv4 zurück.
Sander Steffann

2

Der Zwischenschritt, der jetzt verwendet wird, wird als Tunneln bezeichnet. Im Wesentlichen wandern IPv6-Pakete in IPv4-Paketen, bis sie einen Punkt erreichen, an dem sie von der IPv4-Kapselung befreit und auf der anderen Seite in einem vollständigen IPv6-Netzwerk gesendet werden können. Natürlich gibt es viel mehr Komplexität als das, aber das Grundkonzept im Großen und Ganzen ist auf der ganzen Linie dasselbe.

Da immer mehr Geräte IPv6-fähig werden und die Adressverwendung immer vertrauter wird, wird IPv6 immer häufiger verwendet. Ich glaube nicht (persönliche Meinung), dass IPv6 wirklich angenommen wird und eine großangelegte Einführung auf dem SMB- und Personal-Markt stattfinden wird, bis IPv4-Speicherplatz zu einem teuren Gut wird.

Irgendwann in ziemlich ferner Zukunft, wenn IPv6 die überwiegende Mehrheit des Datenverkehrs antreibt, könnte sich das Schicksal von IPv4 umkehren, da IPv4-Datenverkehr in regulären IPv6-Paketen gekapselt werden muss und Tunnelbroker aufgrund von eine ähnliche (aber umgekehrte) Rolle spielen das Fehlen umfassender IPv4-Routing- / IP-Zuweisungen.


1
Ich glaube nicht, dass dies die Frage beantwortet ... Außerdem: Tunneling verschwindet schnell im IPv6-Kerninternet, da natives IPv6 jetzt überall verfügbar ist. Es wird einige Tunnel für Kunden geben, aber das hat nichts mit der Wahl zu tun, die ein System beim Herstellen einer Verbindung trifft. PS: IPv4-over-IPv6-Tunneling wird bereits angezeigt. Einige Kabelnetzbetreiber setzen DS-Lite in diesem Jahr ein, was genau das tut.
Sander Steffann

Ich arbeite für ein großes Rechenzentrum und habe Kontakte zur gesamten Branche. Meine Erfahrung ist, dass IPv6 derzeit definitiv nicht überall verfügbar ist . Tunneling ist vorhanden, um diese Lücke zu schließen, und da die meisten Endbenutzer noch keine IPv6-Zuweisungen haben, ist es immer noch relevant.
Garrett

3
Tunnelbau ist zwar in Gebrauch, sollte aber nach Möglichkeit vermieden werden. ISPs, die ihren Kunden noch kein vernünftiges IPv6 anbieten, machen ihren Job nicht ... Aber wie auch immer: Die Frage war, wie Client-Anwendungen zwischen IPv4 und IPv6 wählen, und das hat nichts mit der Art und Weise zu tun, wie das Netzwerk seine IPv6-Konnektivität hat denn das ist die Aufgabe des Routers, nicht die der Client-Anwendung. Die Client-Anwendung verwendet nur das, was im lokalen Netzwerk verfügbar ist.
Sander Steffann

Kreuzzug weiter, mein Freund.
Garrett

-2

Ich denke, Sie fragen, wie eine App entscheidet, wie sie sich entscheidet. Von der Programmseite hängt es von der Anwendungsimplementierung ab. Wenn der Codierer IPv6 als höhere Priorität als IPv4 einstuft, wird zuerst versucht, getipv6addr () zu verwenden. Wenn dies nicht konfiguriert ist oder fehlschlägt, wird versucht, getaddr () usw. zu verwenden. Auf dieser Grundlage sendet die App die Anforderung zuerst über IPv6 oder umgekehrt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.