¿Qué beneficios / impacto tendrá IPv6 en el desarrollo de aplicaciones & amp; ¿diseño? [cerrado]

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Ha habido mucha prensa sobre IPv6 y el cambio inminente a IPv6 desde IPv4. Tengo cierta comprensión de IPv6, pero a menudo me pregunto cuánto impacto tiene IPv6 en el desarrollo de aplicaciones y amp; diseño (específicamente)? ??

¿Existen algunos beneficios tangibles / conocidos que IPv6 ofrece y que no tenemos hoy?

Sé que Windows Vista y Server 2008 son compatibles con IPv6 de forma inmediata, ¿alguien está usando (o diseñando con IPv6 en mente) hoy, y si es así, cuáles son los beneficios? ¿Deberíamos considerar IPv6 en los proyectos actuales y futuros?

¿Hay algún buen ejemplo de aplicaciones compatibles con IPv6?

¿Fue útil?

Solución

Afectará el diseño de la interfaz de usuario para cualquier software donde ingrese una dirección IP, ya que tendrá que permitirles seleccionar entre la entrada de IPv4 e IPv6. Aunque bastante obvio.

Mi entendimiento es que no cambiará mucho más. La mayoría de los programas utilizan las instalaciones de red proporcionadas por el sistema operativo, por lo que, cuando los datos regresan a la aplicación, se eliminan todas las complejidades de direccionamiento y transmisión. Por supuesto, hay algunas aplicaciones que se verán más afectadas, pero esas serán las que trabajarán directamente con la red ... no su aplicación típica de línea de negocio.

Debe ver dónde se encuentra su aplicación en el modelo OSI . Creo que las direcciones IP son parte de la capa 3, así que si estás por encima de esa capa, el sistema operativo te abstraerá de los cambios.

Una cosa que puede apestar son los juegos antiguos en los que colocas la dirección IP de un jugador al que deseas conectarte (Age of Empires, Starcraft, etc.). Parece que a menos que algún tipo de tunel IPv4-IPv6 se rompa esa funcionalidad del juego.

Otros consejos

La respuesta de Aaron es, me temo, bastante incorrecta. Sí, los cambios en la interfaz de usuario serán necesarios, pero es probable que cualquier código que use las API de socket tradicionales también necesite cambios sustanciales para admitir IPv6.

El código más antiguo utiliza una " familia de direcciones " " constante ( AF_INET ) y una estructura de datos particular ( struct sockaddr_in ). Cualquier código que se siga usando está bloqueado en IPv4.

El código más reciente debe usar llamadas a API modernas como getaddrinfo () que puede devolver los valores correctos para el protocolo, la familia de direcciones (es decir, AF_INET6 ), la dirección, etc. , independientemente de si el host remoto utiliza IPv4 o IPv6 (o ambos).

Es un poco largo, pero aquí hay un ejemplo de código de la página del manual de Linux para getaddrinfo . Observe cómo la llamada obtiene una lista completa de posibles direcciones remotas, y prueba cada una de ellas hasta que tenga éxito:

         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 */

Inicialmente no mucho. El cambio de IPv4 a v6 debería ser transparente para la mayoría de las aplicaciones de escritorio y web.

Pero eventualmente las aplicaciones que usan modelos de red que se hacen más fáciles con IPv6 se volverán más comunes. Por ejemplo, la mayoría de los usuarios están detrás de un NAT, por lo que las redes de malla solo son factibles para una audiencia técnica. Cualquiera que haya tenido que abrir puertos en su enrutador para el software P2P sabe que esto no es algo que su madre pueda usar.

El streaming y la transmisión también son cosas que se simplifican mediante IPv6.

Todos los navegadores web modernos (Chrome, IE, Safari y Firefox vienen a la mente) son compatibles con IPv6. También IPv6 es consciente de µTorrent.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top