Quels avantages / impact IPv6 aura-t-il sur le développement d'applications & amp; conception? [fermé]

StackOverflow https://stackoverflow.com/questions/207838

  •  03-07-2019
  •  | 
  •  

Question

Il y a eu beaucoup de presse sur IPv6 et sur le passage imminent à IPv6 à partir d'IPv4. Je connais un peu IPv6, mais je me suis souvent demandé quel impact IPv6 avait sur le développement d'applications & amp; conception (spécifiquement)?

Existe-t-il des avantages tangibles / bien connus apportés par IPv6, dont nous ne disposons pas encore aujourd'hui?

Je sais que Windows Vista et Server 2008 prennent en charge IPv6 clé en main. Quelqu'un utilise-t-il (ou conçoit-il avec IPv6) aujourd'hui, et si oui, quels en sont les avantages? Devrions-nous envisager IPv6 dans nos projets actuels et futurs?

Existe-t-il des bons exemples d'applications compatibles IPv6?

Était-ce utile?

La solution

Cela aura un impact sur la conception de l'interface utilisateur de tout logiciel dans lequel vous entrez une adresse IP, car vous devrez les laisser choisir entre les entrées IPv4 et IPv6. Assez évident cependant.

D'après ce que je comprends, rien d'autre ne changera. La plupart des programmes utilisent les fonctionnalités réseau fournies par le système d'exploitation. Ainsi, au moment où les données sont renvoyées à l'application, toutes les complexités de l'adressage et de la transmission sont supprimées. Bien sûr, certaines applications seront plus impactées, mais ce seront celles qui fonctionnent directement avec le réseau… pas votre application métier typique.

Vous devez déterminer où se trouve votre application dans le modèle OSI . Je pense que les adresses IP font partie de la couche 3, donc si vous êtes au-dessus de cette couche, le système d’exploitation vous résume les modifications.

Les vieux jeux où vous entrez l’adresse IP du joueur auquel vous souhaitez vous connecter (Age of Empires, Starcraft, etc.) sont peut-être nul. Il semble que sauf fonctionnalité du tunnel IPv4-IPv6, cette fonctionnalité du jeu sera brisée.

Autres conseils

La réponse d’Aaron est, je le crains, à peu près incorrecte. Oui, des modifications de l'interface utilisateur seront nécessaires, mais tout code utilisant les API de socket traditionnelles nécessitera probablement également des modifications importantes pour prendre en charge IPv6.

La plupart des codes plus anciens utilisent une "famille d’adresses" spécifique. constante ( AF_INET ) et une structure de données particulière ( struct sockaddr_in ). Tout code utilisant encore est effectivement bloqué dans un environnement IPv4.

Le code le plus récent doit utiliser les appels d'API modernes tels que getaddrinfo () , capable de renvoyer les bonnes valeurs pour le protocole, la famille d'adresses (par exemple, AF_INET6 ), l'adresse, etc. , que l'hôte distant utilise IPv4 ou IPv6 (ou les deux).

C'est un peu long, mais voici un exemple de code de la page de manuel Linux pour getaddrinfo . Notez que l’appel obtient une liste complète d’adresses distantes potentielles et essaie l’une après l’autre jusqu’à ce qu’il réussisse:

         memset(&hints, 0, sizeof(struct addrinfo));
         hints.ai_family = AF_UNSPEC;    /* Allow IPv4 or IPv6 */
         hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */
         hints.ai_flags = 0;
         hints.ai_protocol = 0;          /* Any protocol */

         s = getaddrinfo(hostname, service, &hints, &result);
         if (s != 0) {
             fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(s));
             exit(EXIT_FAILURE);
         }

         /* getaddrinfo() returns a list of address structures.
            Try each address until we successfully connect(2).
            If socket(2) (or connect(2)) fails, we (close the socket
            and) try the next address. */

         for (rp = result; rp != NULL; rp = rp->ai_next) {
             sfd = socket(rp->ai_family, rp->ai_socktype,
                          rp->ai_protocol);
             if (sfd == -1)
                 continue;

             if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1)
                 break;                  /* Success */

             close(sfd);
         }

         if (rp == NULL) {               /* No address succeeded */
             fprintf(stderr, "Could not connect\n");
             exit(EXIT_FAILURE);
         }

         freeaddrinfo(result);           /* No longer needed */

Au début pas beaucoup. Le passage d'IPv4 à v6 doit être transparent pour la plupart des applications de bureau et Web.

Toutefois, les applications utilisant des modèles de réseau simplifiés par IPv6 deviendront de plus en plus courantes. Par exemple, la plupart des utilisateurs sont derrière un NAT, les réseaux maillés ne sont réalisables que pour un public technique. Toute personne qui a dû ouvrir des ports sur son routeur pour un logiciel P2P sait que ce n’est pas quelque chose que sa mère pourrait utiliser.

Le streaming et la diffusion sont également des choses facilitées par IPv6.

Tous les navigateurs Web modernes (notamment Chrome, IE, Safari et Firefox) sont tous compatibles IPv6. ?Torrent est également compatible avec IPv6.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top