Réponses:
La première chose qu'un client détermine, c'est quels protocoles sont disponibles. Supposons que IPv4 et IPv6 soient disponibles (sinon la réponse au protocole à choisir est triviale;) Il effectuera ensuite une recherche DNS pour les enregistrements A (adresse IPv4) et AAAA (adresse IPv6). Si un seul type est renvoyé, il l'utilisera. Si les adresses IPv4 et IPv6 sont renvoyées, le comportement par défaut dépend un peu du logiciel client. La RFC 3484 est généralement utilisée.
Selon les normes officielles, il devrait préférer IPv6, mais comme certaines machines (0,01% ou moins) ont mal configuré IPv6, les clients sont devenus plus intelligents. De nos jours, la plupart des navigateurs essaient de se connecter via IPv6, mais s'ils n'obtiennent pas de connexion fonctionnelle dans les 300 millisecondes, ils essaieront de se connecter via IPv4 en parallèle. La première connexion qui réussit est ensuite utilisée. Ceci est couvert dans le RFC Happy Eyeballs .
Apple a changé cela dans Lion. Là, le système d'exploitation garde la trace des performances de toutes les connexions et s'il détermine que la connexion IPv4 a une latence plus faible que la connexion IPv6, il commencera à préférer IPv4. Mais si la connexion IPv4 devient plus lente, elle peut revenir à IPv6. Jetez un œil à ce fil de discussion pour une discussion sur cette fonctionnalité.
Pour l'utilisateur, peu importe si IPv4 ou IPv6 est utilisé, tant qu'il fonctionne. IPv4 et IPv6 doivent également être fournis. Les sites Web devraient fonctionner exactement de la même manière sur IPv4 que sur IPv6, etc.
IPv4 restera utilisé pendant de nombreuses années à venir. Il deviendra inutilisable une fois que de nouveaux services (sites Web, jeux, etc.) seront déployés uniquement sur IPv6 car il n'y aura plus de nouvelles adresses IPv4 à utiliser. Et à un moment donné, tout ce qui fonctionne sur IPv4 fonctionnera également sur IPv6. À ce moment-là, la désactivation d'IPv4 permettra d'économiser du temps et de l'argent (pourquoi maintenir deux protocoles quand un est suffisant?).
apt-get update
par exemple, essaie de se connecter à des hôtes ipv6, mais l'hôte lui-même n'a même pas d'adresse IPv6, à part son adresse locale de lien.
L'étape intermédiaire utilisée actuellement est connue sous le nom de tunneling. Essentiellement, les paquets IPv6 voyagent à l'intérieur des paquets IPv4 jusqu'à ce qu'ils atteignent un point où ils peuvent être supprimés de l'encapsulation IPv4 et envoyés de l'autre côté sur un réseau IPv6 complet. Bien sûr, il y a beaucoup plus de complexité que cela, mais le concept de base dans l'ensemble est le même à tous les niveaux.
Alors que de plus en plus d'appareils deviennent compatibles IPv6 et que les gens se familiarisent avec l'utilisation des adresses, IPv6 verra une utilisation accrue. Je ne crois pas (opinion personnelle) que l'IPv6 sera véritablement adopté et verra un déploiement à grande échelle sur le marché des PME et des particuliers jusqu'à ce que l'espace IPv4 devienne un produit coûteux.
À un moment donné dans un avenir assez lointain où IPv6 alimente une écrasante majorité du trafic, j'ai pu voir un renversement du sort pour IPv4, où le trafic IPv4 doit être encapsulé dans des paquets IPv6 réguliers et des courtiers de tunnels jouent un rôle similaire (mais inversé) en raison de le manque de larges assignations de routage / IP IPv4.
Je pense que vous demandez comment une application décide comment choisir. Du côté du programme, cela dépend de la mise en œuvre de l'application. Si le codeur fait d'IPv6 une priorité plus élevée que IPv4, par exemple, il essaiera d'abord d'utiliser getipv6addr (). Si cela n'est pas configuré ou échoue, il essaiera d'utiliser getaddr (), etc. Sur cette base, l'application enverra d'abord la demande via IPv6, ou vice versa.