Problèmes d’interface utilisateur pour les applications Winsock IPv6
L’une des modifications les plus évidentes entre IPv4 et 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.
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, ne sont pas propices à 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, la possibilité pour les administrateurs de spécifier des informations d’adresse IPv6 n’est probablement pas susceptible de se produire sur une base par nœud.
L’affichage d’une adresse IPv6 dans l’interface utilisateur n’est pas inconcevable. Par conséquent, les développeurs doivent prendre en compte 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 décrit la différence entre la prévisibilité de longueur d’adresse IPv4 et les considérations relatives à la longueur des adresses 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 rigidement 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 double-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 possibilité de 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 en compte cette fonctionnalité lors de la création d’affichages d’interface utilisateur d’adresses IPv6. Certes, les développeurs doivent s’assurer que l’interface utilisateur est capable d’afficher des adresses IP qui n’utilisent pas de deux-points pour représenter une série de zéros (première adresse ci-dessous), ainsi que 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 augmente sa longueur jusqu’à un autre onze 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, la prise en compte des conventions d’affectation de noms doit être intégrée à 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 d’adresses IPv6 que les développeurs doivent prendre en compte lors de la modification de leur application et lors 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 en 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, le cas échéant, comment ces adresses seront-elles gérées et affichées ? Allez-vous discerner 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 examiner attentivement leur public client lors du développement d’interfaces utilisateur d’adresse IP.
Meilleures pratiques
- Les développeurs doivent prendre en compte l’approche appropriée pour chaque interface utilisateur lors de la modification de leur application pour prendre en charge IPv6. S’assurer que l’interface utilisateur contient suffisamment de longueur pour afficher les adresses IPv6 est impérative, car elle détermine si cette adresse est basée sur le nombre ou le nom.
- Dans la mesure du possible, utilisez des fonctions Winsock et d’assistance IP existantes lors de l’utilisation d’adresses IPv6 plutôt que de réinscrire cette logique. Par exemple, lesRtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddresset Fonctions 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 faire l’objet d’un examen, et une partie de cet examen doit inclure si les informations fournies (sous IPv4) sont appropriées pour IPv6.
- La fonctionnalité de spécification d’une adresse IP doit également dépendre du fait que IPv4 est en cours d’utilisation ou que IPv6 soit disponible. Si IPv6 est disponible, est-il approprié de spécifier des adresses numériques (hexadécimales) ou des adresses basées sur un nom ?
Tâches de codage
Pour réviser votre base de code existante d’IPv4 vers IPv4 et IPv6-interopérabilité
- Effectuez une révision visuelle de l’interface utilisateur, à la recherche d’un élément dépendant 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 identifiés 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.
- Lors de la recherche d’un de ces contrôles, examinez s’il est approprié d’afficher l’adresse lors de l’utilisation de IPv6. S’il est possible que IPv4 ou IPv6 soit utilisé, assurez-vous que l’interface utilisateur peut prendre en charge l’un ou l’autre. Remplacez ou augmentez les contrôles par des contrôles d’interface utilisateur qui peuvent afficher une adresse IPv6 entière.
- Suivez les tests de l’interface utilisateur pour vous assurer que les modifications qui activent l’affichage d’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’elles gèrent correctement les adresses IPv6.
Rubriques connexes
-
modification des structures de données pour les appications Winsock IPv6
-
appels de fonction pour les applications Winsock IPv6