Partager via


Problèmes d’interface utilisateur pour les applications Winsock IPv6

L’une des modifications les plus évidentes d’IPv4 à IPv6 est la taille de l’adresse IP. De nombreuses interfaces utilisateur fournissent des boîtes de dialogue qui permettent à un utilisateur d’entrer une adresse IP, comme illustré dans la figure suivante.

Zone d’adresse ipv4 commune dans une interface utilisateur

L’adressage dans IPv6, en raison de nombreux facteurs tels que la longueur, la complexité et l’importance des sections dans l’espace d’adressage IPv6, n’est pas propice à la modification ou à la spécification par les utilisateurs. Par conséquent, la nécessité de fournir aux utilisateurs la possibilité de spécifier leur propre adresse est réduite. En outre, en raison de la complexité associée à l’adressage IPv6, fournir aux administrateurs la possibilité de spécifier les informations d’adresse IPv6 n’est pas susceptible de se produire par nœud.

L’affichage d’une adresse IPv6 dans l’interface utilisateur n’est pas inconcevable. Par conséquent, les développeurs doivent tenir compte de la variabilité de la taille d’une adresse IPv6 lors de la modification d’une application pour prendre en charge IPv6.

Le reste de cette section traite de la différence entre la prévisibilité de la longueur d’adresse IPv4 et les considérations relatives à la longueur d’adresse IPv6. Cette section suppose que les adresses IPv6 sont affichées dans leur représentation hexadécimale.

Les adresses IPv4 sont prévisibles en taille, car elles suivent de manière rigide la notation décimale en pointillés, comme l’illustre l’exemple d’adresse suivant :

10.10.256.1

Les adresses IPv6 ne sont pas si prévisibles, en raison de la convention d’adresse IPv6 qui permet l’utilisation d’un signe deux-points (::) pour représenter une série de zéros. Par conséquent, les représentations d’adresse IPv6 suivantes correspondent à la même adresse IPv6 :

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

La capacité à représenter une série de zéros avec un double signe deux-points entraîne une longueur imprévisible pour un IPv6 donné, ce qui oblige les programmeurs à prendre cette fonctionnalité en considération lors de la création d’affichages d’interface utilisateur d’adresses IPv6. Les développeurs doivent certainement s’assurer que l’interface utilisateur est capable d’afficher des adresses IP qui n’utilisent pas de double-points pour représenter une série de zéros (première adresse ci-dessous), ainsi que d’être en mesure d’afficher l’adresse IPv6 la plus longue possible (deuxième adresse ci-dessous, avec l’adresse IPv4 incorporée) lors de la création de leur interface utilisateur compatible IPv6. Notez également que l’ajout de l’identificateur d’étendue (ID) à l’adresse suivante augmenterait sa longueur de onze autres caractères :

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

Une autre considération importante est de savoir si les adresses basées sur des noms sont plus appropriées que les adresses IPv6 basées sur des nombres. Si les adresses basées sur des noms sont plus appropriées, les conventions de nommage doivent être intégrées à l’interface utilisateur, y compris toute vérification des erreurs d’entrée appropriée pour la tâche.

Il existe d’autres complexités associées à l’affichage des adresses IPv6 que les développeurs doivent prendre en compte lors de la modification de leur application et de la conception de représentations d’interface utilisateur d’adresses IPv6. Voici quelques-unes de ces considérations :

  • L’adresse doit-elle contenir toutes les séquences de zéros ou utiliser la notation deux-points ?
  • Est-il plus approprié d’utiliser une représentation d’adresse basée sur un nombre ou une représentation basée sur un nom ?
  • L’utilisateur souhaite-t-il discerner un certain aspect du schéma d’adressage, tel que le préfixe de sous-réseau, l’identificateur d’étendue ou d’autres sous-champs ?
  • L’utilisateur souhaite-t-il déterminer d’autres aspects de l’adresse, tels que l’identificateur TLA, l’identificateur NLA ou l’identificateur SLA ?
  • Votre interface utilisateur sera-t-elle capable de discerner les adresses IPv6 incorporées et, si c’est le cas, comment celles-ci seront-elles gérées et affichées ? Faites-vous la distinction entre les adresses compatibles IPv4 et les adresses IPv6 mappées par IPv4 lors de l’affichage des informations d’adresse à l’utilisateur ?

Il existe également d’autres considérations, et les développeurs doivent soigneusement prendre en compte leur public client lors du développement d’interfaces utilisateur d’adresses IP.

Bonnes pratiques

  • Les développeurs doivent prendre en compte l’approche appropriée de chaque interface utilisateur lors de la modification de leur application pour prendre en charge IPv6. Il est impératif de s’assurer que l’interface utilisateur contient suffisamment de longueur pour afficher les adresses IPv6, ainsi que de déterminer si cette adresse est basée sur le numéro ou le nom.
  • Dans la mesure du possible, utilisez les fonctions Winsock et d’assistance IP existantes lors de l’utilisation d’adresses IPv6 au lieu de réapplémenter cette logique. Par exemple, les fonctions RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddress et RtlIpv6StringToAddressEx peuvent être utilisées pour convertir entre les adresses IPv6 et les représentations de chaîne de ces adresses IPv6.

Code à éviter

  • Les éléments d’interface utilisateur qui dépendent d’une adresse de taille IPv4 doivent être examinés, et une partie de cet examen doit indiquer si les informations que vous fournissez (sous IPv4) sont appropriées pour IPv6.
  • La possibilité de spécifier une adresse IP doit également dépendre de l’utilisation d’IPv4 ou de la disponibilité d’IPv6. Si IPv6 est disponible, est-il approprié de spécifier des adresses basées sur des nombres (hexadécimaux) ou des adresses basées sur des noms ?

Tâches de codage

Pour modifier votre base de code existante d’IPv4 vers l’interopérabilité IPv4 et IPv6

  1. Effectuez une révision visuelle de l’interface utilisateur, en recherchant tout élément qui dépend d’une longueur spécifique pour la chaîne d’adresse IP. Les contrôles avec la notation décimale en pointillés à quatre sections facilement identifiables sont faciles à repérer, mais d’autres ne le sont pas. Il peut y avoir des endroits où les adresses IP peuvent être affichées, comme dans les boîtes de dialogue, où une adresse IPv6 peut manquer de salle d’affichage.
  2. Après avoir trouvé l’un de ces contrôles, examinez s’il est approprié d’afficher l’adresse lors de l’utilisation d’IPv6. S’il est possible qu’IPv4 ou IPv6 soit en cours d’utilisation, assurez-vous que l’interface utilisateur peut prendre en charge l’un ou l’autre. Remplacez ou augmentez tous les contrôles par des contrôles d’interface utilisateur qui peuvent afficher une adresse IPv6 entière.
  3. Effectuez un test de l’interface utilisateur pour vous assurer que les modifications qui permettent l’affichage des adresses IPv6 conservent la facilité d’utilisation prévue lors de l’utilisation d’adresses IPv4. En outre, testez les emplacements d’affichage des adresses de protocole, tels que les boîtes de dialogue d’information, pour vous assurer qu’ils gèrent correctement les adresses IPv6.

Guide IPv6 pour les applications de sockets Windows

Modification des structures de données pour les applications Winsock IPv6

Sockets à double pile pour les applications Winsock IPv6

Appels de fonction pour les applications Winsock IPv6

Utilisation d’adresses IPv4 codées en dur

Protocoles sous-jacents pour les applications Winsock IPv6