Partilhar via


Problemas de interface do usuário para aplicativos Winsock IPv6

Uma das mudanças mais óbvias do IPv4 para o IPv6 é o tamanho do endereço IP. Muitas interfaces de usuário fornecem caixas de diálogo que permitem que um usuário insira um endereço IP, como exemplificado na figura a seguir.

caixa de endereço IPv4 comum em um de interface do usuário

O endereçamento no IPv6, devido a muitos fatores, como comprimento, complexidade e a importância das seções dentro do espaço de endereçamento IPv6, não é propício à modificação ou especificação pelos usuários. Portanto, a necessidade de fornecer aos usuários a capacidade de especificar seu próprio endereço é reduzida. Além disso, devido à complexidade associada ao endereçamento IPv6, fornecer aos administradores a capacidade de especificar informações de endereço IPv6 provavelmente não ocorrerá por nó.

A exibição de um endereço IPv6 na interface do usuário não é inconcebível e, portanto, os desenvolvedores devem considerar a variabilidade no tamanho de um endereço IPv6 ao modificar um aplicativo para oferecer suporte a IPv6.

O restante desta seção discute a diferença entre a previsibilidade do comprimento do endereço IPv4 e as considerações sobre o comprimento do endereço IPv6. Esta seção presume que os endereços IPv6 estão sendo exibidos em sua representação hexadecimal.

Os endereços IPv4 são previsíveis em tamanho, porque seguem rigidamente a notação decimal pontilhada, como ilustra o exemplo de endereço a seguir:

10.10.256.1

Os endereços IPv6 não são tão previsíveis, devido à convenção de endereços IPv6 que permite o uso de dois pontos duplos (::) para representar uma série de zeros. Como tal, as seguintes representações de endereço IPv6 equivalem ao mesmo endereço IPv6:

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

A capacidade de representar uma série de zeros com dois pontos e vírgulas resulta em um comprimento imprevisível para qualquer IPv6, o que exige que os programadores levem essa capacidade em consideração ao criar exibições de endereços IPv6 na interface do usuário. Certamente, os desenvolvedores devem garantir que a interface do usuário seja capaz de exibir endereços IP que não usem dois pontos duplos para representar uma série de zeros (primeiro endereço abaixo), bem como ser capaz de exibir o endereço IPv6 mais longo possível (segundo endereço abaixo, com o endereço IPv4 incorporado) ao criar sua interface de usuário compatível com IPv6. Observe também que adicionar o identificador de escopo (ID) ao seguinte endereço aumentaria seu comprimento em até onze outros caracteres:

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

Outra consideração importante é se os endereços baseados em nome são mais apropriados do que os endereços IPv6 baseados em números. Se os endereços baseados em nome forem mais apropriados, as convenções de nomenclatura devem ser incorporadas na interface do usuário, incluindo qualquer verificação de erro de entrada apropriada para a tarefa.

Há outras complexidades associadas à exibição de endereços IPv6 que os desenvolvedores devem levar em consideração ao modificar seu aplicativo e ao projetar representações de endereços IPv6 na interface do usuário. Algumas dessas considerações são as seguintes:

  • O endereço deve conter todas as sequências de zeros ou usar a notação de dois pontos?
  • É mais apropriado usar uma representação de endereço baseada em número ou uma representação baseada em nome?
  • O usuário está interessado em discernir um determinado aspeto do esquema de endereçamento, como o prefixo da sub-rede, o identificador de escopo ou outros subcampos?
  • O usuário está interessado em determinar outros aspetos do endereço, como o identificador TLA, o identificador NLA ou o identificador SLA?
  • Sua interface de usuário será capaz de discernir endereços IPv6 incorporados e, em caso afirmativo, como eles serão tratados e exibidos? Você fará uma distinção entre endereços compatíveis com IPv4 e endereços IPv6 mapeados por IPv4 ao exibir informações de endereço para o usuário?

Há outras considerações também, e os desenvolvedores devem considerar cuidadosamente seu público de clientes ao desenvolver interfaces de usuário de endereço IP.

Boas Práticas

  • Os desenvolvedores devem considerar a abordagem apropriada para cada interface do usuário ao modificar seu aplicativo para oferecer suporte ao IPv6. Garantir que a interface do usuário contenha comprimento suficiente para exibir endereços IPv6 é imperativo, assim como determinar se esse endereço é baseado em número ou nome.
  • Sempre que possível, use as funções existentes do Winsock e do IP Helper ao usar endereços IPv6 em vez de reimplementar essa lógica. Por exemplo, as funções RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddresse RtlIpv6StringToAddressEx podem ser usadas para converter entre endereços IPv6 e representações de cadeia de caracteres desses endereços IPv6.

Código a evitar

  • Os elementos da interface do usuário que dependem de um endereço de tamanho IPv4 devem passar por escrutínio, e parte desse escrutínio deve incluir se as informações que você estava fornecendo (em IPv4) são apropriadas para IPv6.
  • A capacidade de especificar um endereço IP também deve depender se o IPv4 está em uso ou o IPv6 está disponível. Se o IPv6 estiver disponível, é apropriado especificar endereços baseados em números (hexadecimais) ou endereços baseados em nome?

Tarefas de codificação

Para revisar sua base de código existente de IPv4 para de interoperabilidade IPv4 e IPv6

  1. Execute uma revisão visual da interface do usuário, procurando qualquer elemento que dependa de um comprimento específico para a cadeia de caracteres de endereço IP. Controles com a notação decimal pontilhada de quatro seções facilmente identificada são fáceis de detetar, mas outros não. Pode haver locais onde os endereços IP podem ser exibidos, como em caixas de diálogo, onde um endereço IPv6 pode ficar sem sala de exibição.
  2. Ao encontrar qualquer um desses controles, examine se é apropriado exibir o endereço ao usar IPv6. Se for possível que o IPv4 ou o IPv6 estejam em uso, certifique-se de que a interface do usuário possa acomodar qualquer um deles. Substitua ou aumente todos os controles por controles de interface do usuário que possam exibir um endereço IPv6 inteiro.
  3. Acompanhe os testes da interface do usuário para garantir que as alterações que permitem a exibição de endereços IPv6 mantenham a usabilidade pretendida ao usar endereços IPv4. Além disso, teste os locais de exibição de endereços de protocolo, como caixas de diálogo informativas, para garantir que eles lidem corretamente com endereços IPv6.

Guia IPv6 para aplicativos Windows Sockets

Alterando estruturas de dados para aplicativos Winsock IPv6

Soquetes Dual-Stack para aplicativos Winsock IPv6

chamadas de função para aplicativos Winsock IPv6

Uso de endereços IPv4 codificados

protocolos subjacentes para aplicativos Winsock IPv6