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

18

Comment les serveurs / ordinateurs / utilisateurs / applications savent-ils demander une ressource sur Internet avec une adresse IPv6 et une adresse IPv4?

Bobby S
la source

Réponses:

24

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?).

Sander Steffann
la source
1
Après cela, la RFC 3484 a été obsolète par la RFC 6724 .
Michael Hampton
Comment détermine-t-il les protocoles disponibles? J'ai vu un comportement aléatoire où, apt-get updatepar 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.
Halfgaar
1
Cela est géré par la sélection d'adresse source et destination (RFC 6724). Dans votre cas, il semble que l'hôte voit l'enregistrement AAAA dans DNS, choisisse cette adresse de destination, puis découvre qu'il n'a pas d'adresse source qu'il peut utiliser avec cette destination, puis retombe sur IPv4.
Sander Steffann
2

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.

Garrett
la source
1
Je ne pense pas que cela réponde à la question ... En outre: le tunneling disparaît rapidement dans le noyau IPv6 car IPv6 natif est désormais disponible partout. Il y aura des tunnels vers les clients, mais cela n'a rien à voir avec le choix qu'un système fait lors de la connexion. PS: le tunneling IPv4 sur IPv6 apparaît déjà. Certains opérateurs d'Internet par câble déploient DS-Lite cette année, ce qui est exactement le cas.
Sander Steffann
Je travaille pour un grand centre de données et j'ai des contacts dans toute l'industrie, et mon expérience est que IPv6 n'est définitivement plus partout maintenant. Le tunneling existe pour combler le fossé et étant donné que la plupart des utilisateurs finaux n'ont pas encore d'affectations IPv6, il est toujours pertinent.
Garrett
3
Le tunneling est en effet utilisé, mais il doit être évité dans la mesure du possible. Les FAI qui n'offrent pas encore d'IPv6 décent à leurs clients ne font pas leur travail ... Mais de toute façon: la question était de savoir comment les applications clientes choisissent entre IPv4 et IPv6, et cela n'a rien à voir avec la façon dont le réseau a sa connectivité IPv6 parce que c'est le travail du routeur, pas celui de l'application cliente. L'application cliente utilise simplement tout ce qui est disponible sur le réseau local.
Sander Steffann
Croisade, mon ami.
Garrett
-2

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.

MaryOpen.cn
la source