Compartir a través de


Problemas de la interfaz de usuario para aplicaciones IPv6 Winsock

Uno de los cambios más obvios de IPv4 a IPv6 es el tamaño de la dirección IP. Muchas interfaces de usuario proporcionan cuadros de diálogo que permiten a un usuario escribir una dirección IP, como se muestra en la ilustración siguiente.

cuadro de dirección ipv4 común en una interfaz de usuario

El direccionamiento en IPv6, debido a muchos factores como la longitud, la complejidad y la importancia de las secciones dentro del espacio de direcciones IPv6, no resulta favorable a la modificación o especificación de los usuarios. Por lo tanto, se reduce la necesidad de proporcionar a los usuarios la capacidad de especificar su propia dirección. Además, debido a la complejidad asociada con el direccionamiento IPv6, es probable que los administradores proporcionen a los administradores la capacidad de especificar información de direcciones IPv6 por nodo.

Mostrar una dirección IPv6 en la interfaz de usuario no es inconcebible y, por tanto, los desarrolladores deben tener en cuenta la variabilidad en el tamaño de una dirección IPv6 al modificar una aplicación para admitir IPv6.

En el resto de esta sección se describe la diferencia entre las consideraciones de predicción de longitud de dirección IPv4 e IPv6. En esta sección se supone que las direcciones IPv6 se muestran en su representación hexadecimal.

Las direcciones IPv4 son predecibles en tamaño, ya que siguen rígidamente la notación decimal punteada, como se muestra en el ejemplo de dirección siguiente:

10.10.256.1

Las direcciones IPv6 no son tan predecibles, debido a la convención de direcciones IPv6 que permite el uso de dos puntos (::) para representar una serie de ceros. Por lo tanto, las siguientes representaciones de dirección IPv6 equivalen a la misma dirección IPv6:

1040:0:0:0:0:0:0:1
1040::1

La capacidad de representar una serie de ceros con un signo de dos puntos da como resultado una longitud impredecible para cualquier IPv6 determinado, lo que requiere que los programadores tomen en consideración esta funcionalidad al crear pantallas de interfaz de usuario de direcciones IPv6. Sin duda, los desarrolladores deben asegurarse de que la interfaz de usuario sea capaz de mostrar direcciones IP que no usen dos puntos para representar una serie de ceros (primera dirección a continuación), así como poder mostrar la dirección IPv6 más larga posible (segunda dirección a continuación, con la dirección IPv4 incrustada) al crear su interfaz de usuario compatible con IPv6. Tenga en cuenta también que agregar el identificador de ámbito (ID) a la siguiente dirección aumentaría su longitud hasta otros once caracteres:

21DA:00D3:0010:2F3B:02AA:00FF:FE28:9C5A
0000:0000:0000:0000:0000:ffff:123.123.123.123

Otra consideración importante es si las direcciones basadas en nombres son más adecuadas que las direcciones IPv6 basadas en números. Si las direcciones basadas en nombres son más adecuadas, se debe tener en cuenta las convenciones de nomenclatura en la interfaz de usuario, incluida la comprobación de errores de entrada adecuada para la tarea.

Hay otras complejidades asociadas a la visualización de direcciones IPv6 que los desarrolladores deben tener en cuenta al modificar su aplicación y al diseñar representaciones de interfaz de usuario de direcciones IPv6. Algunas de estas consideraciones son las siguientes:

  • ¿La dirección debe contener todas las secuencias de ceros o usar la notación de dos puntos?
  • ¿Es más adecuado usar una representación de dirección basada en números o una representación basada en nombres?
  • ¿El usuario está interesado en distinguir un aspecto determinado del esquema de direccionamiento, como el prefijo de subred, el identificador de ámbito u otros subcampos?
  • ¿El usuario está interesado en determinar otros aspectos de la dirección, como el identificador de TLA, el identificador de NLA o el identificador del Acuerdo de Nivel de Servicio?
  • ¿La interfaz de usuario será capaz de distinguir las direcciones IPv6 insertadas y, si es así, cómo se controlarán y mostrarán? ¿Distinguirá entre las direcciones compatibles con IPv4 y las direcciones IPv4 asignadas a IPv6 al mostrar información de direcciones al usuario?

También hay otras consideraciones, y los desarrolladores deben considerar cuidadosamente su audiencia de clientes al desarrollar interfaces de usuario de dirección IP.

Procedimientos recomendados

  • Los desarrolladores deben tener en cuenta el enfoque adecuado para cada interfaz de usuario al modificar su aplicación para admitir IPv6. Asegurarse de que la interfaz de usuario contiene suficiente longitud para mostrar direcciones IPv6 es imperativa, ya que determina si esa dirección es el número o el nombre en función.
  • Siempre que sea posible, use las funciones existentes de Winsock e IP Helper al usar direcciones IPv6 en lugar de volver a implementar esta lógica. Por ejemplo, las RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddressy RtlIpv6StringToAddressEx se pueden usar para convertir entre direcciones IPv6 y representaciones de cadena de estas direcciones IPv6.

Código para evitar

  • Los elementos de la interfaz de usuario que dependen de una dirección IPv4 deben someterse a un examen y parte de ese examen deben incluir si la información que proporcionó (en IPv4) es adecuada para IPv6.
  • La capacidad de especificar una dirección IP también debe depender de si IPv4 está en uso o IPv6 está disponible. Si IPv6 está disponible, ¿es adecuado especificar direcciones basadas en números (hexadecimales) o direcciones basadas en nombres?

Tareas de codificación

Para revisar la base de código existente de IPv4 a IPv4 e interoperabilidad IPv6

  1. Realice una revisión visual de la interfaz de usuario, buscando cualquier elemento que dependa de una longitud específica para la cadena de dirección IP. Los controles con la notación decimal con puntos de cuatro secciones fácilmente identificados son fáciles de detectar, pero otros no. Puede haber lugares en los que se podrían mostrar direcciones IP, como en cuadros de diálogo, donde una dirección IPv6 podría quedar fuera de la sala de visualización.
  2. Después de encontrar cualquiera de estos controles, examine si es adecuado mostrar la dirección al usar IPv6. Si es posible que IPv4 o IPv6 esté en uso, asegúrese de que la interfaz de usuario pueda acomodar cualquiera de las dos opciones. Reemplace o aumente los controles con controles de interfaz de usuario que pueden mostrar una dirección IPv6 completa.
  3. Realice un seguimiento de las pruebas de la interfaz de usuario para asegurarse de que los cambios que habilitan la visualización de direcciones IPv6 mantienen la facilidad de uso prevista al usar direcciones IPv4. Además, pruebe las ubicaciones de visualización de direcciones de protocolo, como cuadros de diálogo informativos, para asegurarse de que controlan correctamente las direcciones IPv6.

Guía de IPv6 para aplicaciones de Windows Sockets

cambiar las estructuras de datos para las de aplicaciones de Winsock de IPv6

Dual-Stack sockets para aplicaciones IPv6 Winsock

llamadas de función para aplicaciones IPv6 Winsock

uso de direcciones IPv4 codificadas de forma dura

protocolos subyacentes para aplicaciones IPv6 Winsock