¿Cómo saben las aplicaciones cliente usar IPv4 o IPv6?

18

¿Cómo saben los servidores / computadoras / usuarios / aplicaciones para solicitar un recurso a través de Internet con una dirección IPv6 y una dirección IPv4?

Bobby S
fuente

Respuestas:

24

Lo primero que determina un cliente es qué protocolos están disponibles. Supongamos que tanto IPv4 como IPv6 están disponibles (de lo contrario, la respuesta a qué protocolo elegir es trivial;) Luego realizará una búsqueda de DNS para los registros A (dirección IPv4) y AAAA (dirección IPv6). Si solo se devuelve un tipo, lo usará. Si se devuelven las direcciones IPv4 e IPv6, el comportamiento predeterminado depende un poco del software del cliente. Por lo general, se utiliza RFC 3484 .

Según los estándares oficiales, debería preferir IPv6, pero debido a que hay algunas máquinas (0.01% o menos) que han configurado incorrectamente IPv6, los clientes se han vuelto más inteligentes. La mayoría de los navegadores en estos días intentarán conectarse a través de IPv6, pero si no obtienen una conexión que funcione dentro de los 300 milisegundos, intentarán conectarse a través de IPv4 en paralelo. Luego se utiliza la primera conexión que tiene éxito. Esto está cubierto en el Happy Eyeballs RFC .

Apple cambió esto en Lion. Allí, el sistema operativo realmente realiza un seguimiento del rendimiento de todas las conexiones, y si determina que la conexión IPv4 tiene una latencia menor que la conexión IPv6, comenzará a preferir IPv4. Pero si la conexión IPv4 se vuelve más lenta, podría volver a IPv6. Eche un vistazo a este hilo de la lista de correo para una discusión de esta característica.

Para el usuario, no debería importar si se utiliza IPv4 o IPv6, siempre que funcione. IPv4 e IPv6 deben proporcionarse igualmente bien. Los sitios web deberían funcionar exactamente igual sobre IPv4 que sobre IPv6, etc.

IPv4 se mantendrá en uso durante muchos años. Se volverá inutilizable una vez que los nuevos servicios (sitios web, juegos, etc.) se implementen solo a través de IPv6 porque no hay más direcciones IPv4 nuevas para usar. Y en algún momento todo lo que funciona sobre IPv4 también funcionará sobre IPv6. En ese momento, deshabilitar IPv4 ahorrará tiempo y dinero (¿por qué mantener dos protocolos cuando uno es suficiente?).

Sander Steffann
fuente
1
Después de que esto fue escrito, RFC 3484 ha quedado obsoleto por RFC 6724 .
Michael Hampton
¿Cómo determina qué protocolos están disponibles? He visto un comportamiento aleatorio donde, apt-get updatepor ejemplo, intenta conectarse a hosts ipv6, pero el host en sí ni siquiera tiene una dirección IPv6, aparte de su enlace local.
Halfgaar
1
Eso se maneja mediante la selección de dirección de origen y destino (RFC 6724). En su caso, parece que el host ve el registro AAAA en DNS, elige esa dirección de destino, luego descubre que no tiene una dirección de origen que pueda usar con ese destino y luego vuelve a IPv4.
Sander Steffann
2

El paso intermedio que se está utilizando ahora se conoce como túnel. Esencialmente, los paquetes IPv6 viajan dentro de los paquetes IPv4 hasta que alcanzan un punto en el que pueden ser despojados de la encapsulación IPv4 y enviados al otro lado en una red IPv6 completa. Por supuesto, hay mucha más complejidad que eso, pero el concepto básico en general es el mismo en todos los ámbitos.

A medida que más y más dispositivos sean compatibles con IPv6, y las personas se familiaricen más con el uso de las direcciones, IPv6 verá un mayor uso. No creo (opinión personal) que IPv6 sea realmente aceptado y vea un despliegue a gran escala en las PYMES y el mercado personal hasta que el espacio IPv4 se convierta en un producto costoso.

En algún momento en un futuro bastante lejano, cuando IPv6 impulse una abrumadora mayoría del tráfico, podría ver una reversión del destino de IPv4, donde el tráfico de IPv4 debe encapsularse dentro de los paquetes regulares de IPv6 y los intermediarios de túnel desempeñan un papel similar (pero invertido) debido a la falta de enrutamiento IPv4 amplio / asignaciones de IP.

Garrett
fuente
1
No creo que esto responda a la pregunta ... Además: el túnel está desapareciendo rápidamente en el núcleo de Internet IPv6 porque IPv6 nativo está disponible en todas partes ahora. Habrá algunos túneles para los clientes, pero eso no tiene nada que ver con la elección que hace un sistema cuando se conecta. PD: el túnel IPv4 sobre IPv6 ya está apareciendo. Algunos operadores de internet por cable están implementando DS-Lite este año, lo que hace exactamente eso.
Sander Steffann
Trabajo para un gran centro de datos y tengo contactos en toda la industria, y mi experiencia es que IPv6 definitivamente no está en todas partes ahora. Existe un túnel para cerrar la brecha y teniendo en cuenta que la mayoría de los usuarios finales aún no tienen asignaciones de IPv6, sigue siendo relevante.
Garrett
3
De hecho, se está utilizando el túnel, pero se debe evitar siempre que sea posible. Los ISP que aún no ofrecen IPv6 decente a sus clientes no están haciendo su trabajo ... Pero de todos modos: la pregunta era cómo las aplicaciones del cliente eligen entre IPv4 e IPv6, y eso no tiene nada que ver con la forma en que la red tiene su conectividad IPv6 porque ese es el trabajo del enrutador, no la aplicación del cliente. La aplicación cliente solo usa lo que está disponible en la red local.
Sander Steffann
Cruzada, mi amigo.
Garrett
-2

Creo que estás preguntando cómo una aplicación decide cómo elegir. Desde el lado del programa, depende de la implementación de la aplicación. Si el codificador hace de IPv6 una prioridad más alta que IPv4, por ejemplo, primero intentará usar getipv6addr (). Si eso no está configurado o falla, intentará usar getaddr (), etc. En base a esto, la aplicación enviará la solicitud a través de IPv6 primero, o viceversa.

MaryOpen.cn
fuente