Compartilhar via


Problemas de interface do usuário para aplicativos Winsock IPv6

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

caixa de endereço ipv4 comum em uma interface do usuário

O endereçamento no IPv6, devido a muitos fatores, como comprimento, complexidade e significância de seções dentro do espaço de endereço IPv6, não é propício à modificação ou especificação por parte dos 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ó.

Exibir 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 dar suporte a IPv6.

O restante desta seção discute a diferença entre a previsibilidade de 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, pois 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ço IPv6 que permite o uso de dois-pontos (::) para representar uma série de zeros. Dessa forma, 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 resulta em um comprimento imprevisível para qualquer IPv6 fornecido, o que exige que os programadores levem essa funcionalidade em consideração ao criar exibições de interface do usuário de endereços IPv6. Certamente, os desenvolvedores devem garantir que a interface do usuário seja capaz de exibir endereços IP que não usam dois-pontos duplos para representar uma série de zeros (primeiro endereço abaixo), além de poder exibir o endereço IPv6 mais longo possível (segundo endereço abaixo, com o endereço IPv4 inserido) ao criar sua interface do 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 caracteres adicionais:

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úmero. Se os endereços baseados em nome forem mais apropriados, a consideração para convenções de nomenclatura deverá ser incorporada à 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 interface do usuário de endereços IPv6. 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 aspecto do esquema de endereçamento, como o prefixo de sub-rede, o identificador de escopo ou outros subcampos?
  • O usuário está interessado em determinar outros aspectos do endereço, como o identificador TLA, o identificador NLA ou o identificador SLA?
  • Sua interface do usuário será capaz de discernir endereços IPv6 inseridos e, nesse caso, como eles serão tratados e exibidos? Você discernirá 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 o público-alvo do cliente ao desenvolver interfaces do usuário de endereço IP.

Práticas Recomendadas

  • Os desenvolvedores devem considerar a abordagem apropriada para cada interface do usuário ao modificar seu aplicativo para dar suporte a 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 Winsock e Auxiliar de IP existentes ao usar endereços IPv6 em vez de implementar novamente essa lógica. Por exemplo, as funções RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddress e RtlIpv6StringToAddressEx podem ser usadas para converter entre endereços IPv6 e representações de cadeia de caracteres desses endereços IPv6.

Código a ser evitado

  • Os elementos da interface do usuário que dependem de um endereço do tamanho IPv4 devem passar por um 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 se o IPv6 está disponível. Se o IPv6 estiver disponível, será apropriado especificar endereços baseados em número (hexadecimal) ou endereços baseados em nome?

Tarefas de codificação

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

  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 identificadas são fáceis de detectar, mas outros não. Pode haver locais em que os endereços IP podem ser exibidos, como em caixas de diálogo, em que 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 IPv4 ou IPv6 esteja em uso, verifique se a interface do usuário pode acomodar qualquer um. Substitua ou aumente todos os controles por controles de interface do usuário que possam exibir um endereço IPv6 inteiro.
  3. Acompanhe o teste da interface do usuário para garantir que as alterações que habilitam a exibição de endereço IPv6 mantenham a usabilidade pretendida ao usar endereços IPv4. Além disso, teste os locais de exibição de endereço de protocolo, como caixas de diálogo informativas, para garantir que eles manipulem corretamente os endereços IPv6.

Guia IPv6 para aplicativos do Windows Sockets

Alterando estruturas de dados para aplicações winsock IPv6

Soquetes de pilha dupla para aplicativos Winsock IPv6

Chamadas de função para aplicativos Winsock IPv6

Uso de endereços IPv4 codificados

Protocolos subjacentes para aplicativos Winsock IPv6