Comment les applications clientes savent-elles utiliser IPv4 ou IPv6?

Comment les serveurs / ordinateurs / utilisateurs / applications savent-ils demander une ressource sur Internet avec une adresse IPv6 par rapport à l'adresse IPv4?

    La première chose qu'un client détermine, c'est les protocoles disponibles. Supposons que IPv4 et IPv6 sont disponibles (sinon, la réponse à laquelle le protocole à choisir est trivial;) Il effectuera alors 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 d'un bit du logiciel client. Généralement, RFC 3484 est utilisé.

    Selon les normes officielles, il devrait préférer IPv6, mais parce qu'il existe des machines (0,01% ou moins) qui ont mal configuré IPv6, les clients sont devenus plus intelligents. La plupart des navigateurs de nos jours essaieront de se connecter via IPv6, mais s'ils n'obtiennent pas une connexion active dans un délai de 300 millisecondes, ils essayeront de se connecter sur IPv4 en parallèle. La première connexion qui réussit est ensuite utilisée. Ceci est couvert dans la RFC Happy Eyeballs .

    Apple a changé cela en Lion. Là, le système d'exploitation surveille effectivement les performances de toutes les connexions, et s'il détermine que la connexion IPv4 a une latence inférieure à la connexion IPv6, elle commencera à préférer IPv4. Mais si la connexion IPv4 devient plus lente, elle pourrait revenir à IPv6. Jetez un oeil à ce fil de la liste de diffusion pour discuter de cette fonctionnalité.

    Pour l'utilisateur, il ne devrait pas être important si IPv4 ou IPv6 est utilisé, tant qu'il fonctionne. IPv4 et IPv6 devraient être fournis également bien. Les sites Web devraient fonctionner exactement de la même manière sur IPv4 que sur IPv6, etc.

    IPv4 restera est utilisé pendant de nombreuses années à venir. Il deviendra inutilisable une fois que de nouveaux services (sites Web, jeux, etc.) sont déployés uniquement sur IPv6 car il n'y a plus de nouvelles adresses IPv4 à utiliser. Et à un moment donné, tout ce qui fonctionne sur IPv4 fonctionnera également sur IPv6. À ce moment-là, le désactivation d'IPv4 permettra de gagner du temps et de l'argent (pourquoi maintenir deux protocoles lorsque l'on est suffisant?).

    L'étape intermédiaire qui est utilisée maintenant est appelée tunneling. Essentiellement, les paquets IPv6 se déplacent dans les paquets IPv4 jusqu'à ce qu'ils atteignent un point où ils peuvent être dépouillés de l'encapsulation IPv4 et envoyé 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 par-en-grand est le même dans tous les domaines.

    À mesure que de plus en plus de périphériques deviennent compatibles avec IPv6 et que les gens sont plus familiarisés avec l'utilisation des adresses, IPv6 verra une utilisation accrue. Je ne crois pas (opinion personnelle) que l'IPv6 sera vraiment adopté et verra un déploiement à grande échelle dans les PME et le marché personnel jusqu'à ce que l'espace IPv4 devienne un produit coûteux.

    À un moment donné dans un avenir assez éloigné lorsque IPv6 gère une majorité écrasante de trafic, je pourrais voir un renversement du destin pour IPv4, où le trafic IPv4 doit être encapsulé dans les paquets IPv6 réguliers et les courtiers de tunnels servent un rôle similaire (mais inversé) en raison de Le manque de routage IPv4 large / affectations IP.

    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 rend IPv6 une priorité plus élevée que IPv4, par exemple, il essayera d'abord d'utiliser getipv6addr (). Si cela n'est pas configuré ou échoue, il essayera d'utiliser getaddr (), etc. En fonction de cela, l'application enverra la demande par IPv6 en premier ou vice versa.