Problemen met de gebruikersinterface voor IPv6 Winsock-toepassingen
Een van de meest voor de hand liggende wijzigingen van IPv4 in IPv6 is de grootte van het IP-adres. Veel gebruikersinterfaces bieden dialoogvensters waarmee een gebruiker een IP-adres kan invoeren, zoals in de volgende afbeelding wordt geïllustreerd.
Adressering in IPv6, vanwege veel factoren zoals lengte, complexiteit en de betekenis van secties in de IPv6-adresruimte, is niet gunstig voor het wijzigen of specificeren van gebruikers. Daarom is de noodzaak om gebruikers de mogelijkheid te bieden om hun eigen adres op te geven, verminderd. Als gevolg van de complexiteit van IPv6-adressering, waardoor beheerders de mogelijkheid hebben om IPv6-adresgegevens op te geven, worden waarschijnlijk niet per knooppunt uitgevoerd.
Het weergeven van een IPv6-adres in de gebruikersinterface is niet onvoorstelbaar en daarom moeten ontwikkelaars rekening houden met de variabiliteit in de grootte van een IPv6-adres bij het wijzigen van een toepassing ter ondersteuning van IPv6.
In de rest van deze sectie wordt het verschil besproken tussen de voorspelbaarheid van IPv4-adressen en overwegingen met betrekking tot de IPv6-adreslengte. In deze sectie wordt ervan uitgegaan dat IPv6-adressen worden weergegeven in hun hexadecimale weergave.
IPv4-adressen zijn voorspelbaar in grootte, omdat ze de gestippelde decimale notatie strikt volgen, zoals in het volgende adresvoorbeeld wordt geïllustreerd:
10.10.256.1
IPv6-adressen zijn niet zo voorspelbaar, vanwege de IPv6-adresconventie waarmee het gebruik van een dubbele dubbele punt (::) om een reeks nullen weer te geven. Als zodanig zijn de volgende IPv6-adresweergaven gelijk aan hetzelfde IPv6-adres:
1040:0:0:0:0:0:0:1
1040::1
De mogelijkheid om een reeks nullen met een dubbele dubbele punt weer te geven, resulteert in een onvoorspelbare lengte voor een bepaalde IPv6. Hiervoor moeten programmeurs rekening houden met deze mogelijkheid bij het maken van weergaven van IPv6-adressen in de gebruikersinterface. Ontwikkelaars moeten er zeker voor zorgen dat de gebruikersinterface IP-adressen kan weergeven die geen dubbele dubbele punt gebruiken om een reeks nullen (eerste adres hieronder) weer te geven, en dat ze het langst mogelijke IPv6-adres (tweede adres hieronder met het ingesloten IPv4-adres) kunnen weergeven bij het maken van hun IPv6-compatibele gebruikersinterface. Houd er ook rekening mee dat het toevoegen van de bereik-id (ID) aan het volgende adres de lengte met zo veel mogelijk elf tekens vergroot:
21DA:00D3:0010:2F3B:02AA:00FF:FE28:9C5A
0000:0000:0000:0000:0000:ffff:123.123.123.123
Een andere belangrijke overweging is of adressen op basis van namen geschikter zijn dan op getallen gebaseerde IPv6-adressen. Als adressen op basis van namen geschikter zijn, moet u rekening houden met naamconventies in de gebruikersinterface, inclusief eventuele invoerfoutcontrole die geschikt is voor de taak.
Er zijn andere complexiteiten gekoppeld aan het weergeven van IPv6-adressen die ontwikkelaars moeten overwegen bij het wijzigen van hun toepassing en bij het ontwerpen van weergaven van de gebruikersinterface van IPv6-adressen. Enkele van deze overwegingen zijn:
- Moet het adres alle reeksen nullen bevatten of de dubbele dubbele punt notatie gebruiken?
- Is het beter om een adresweergave op basis van een getal of een naamweergave te gebruiken?
- Is de gebruiker geïnteresseerd in het onderscheiden van een bepaald aspect van het adresseringsschema, zoals het subnetvoorvoegsel, de bereik-id of andere subvelden?
- Is de gebruiker geïnteresseerd in het bepalen van andere aspecten van het adres, zoals de TLA-id, de NLA-id of de SLA-id?
- Kan uw gebruikersinterface ingesloten IPv6-adressen onderscheiden en zo ja, hoe worden deze verwerkt en weergegeven? Zult u onderscheid maken tussen IPv4-compatibele adressen en IPv4-toegewezen IPv6-adressen bij het weergeven van adresgegevens aan de gebruiker?
Er zijn ook andere overwegingen en ontwikkelaars moeten zorgvuldig rekening houden met hun klantendoel bij het ontwikkelen van gebruikersinterfaces voor IP-adressen.
Aanbevolen procedures
- Ontwikkelaars moeten rekening houden met de juiste benadering van elke gebruikersinterface bij het wijzigen van hun toepassing ter ondersteuning van IPv6. Het is noodzakelijk om ervoor te zorgen dat de gebruikersinterface voldoende lengte bevat om IPv6-adressen weer te geven, omdat het bepalen of dat adres een getal of naam is.
- Gebruik indien mogelijk bestaande Winsock- en IP Helper-functies bij het gebruik van IPv6-adressen in plaats van deze logica opnieuw te implementeren. De RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddressen RtlIpv6StringToAddressEx functies kunnen worden gebruikt om te converteren tussen IPv6-adressen en tekenreeksweergaven van deze IPv6-adressen.
Code om te vermijden
- Elementen van de gebruikersinterface die afhankelijk zijn van een IPv4-adres, moeten worden gecontroleerd en een deel van die controle moet omvatten of de informatie die u verstrekt (onder IPv4) geschikt is voor IPv6.
- De mogelijkheid om een IP-adres op te geven, moet ook afhankelijk zijn van of IPv4 wordt gebruikt of IPv6 beschikbaar is. Als IPv6 beschikbaar is, is het geschikt om op getallen gebaseerde (hexadecimale) adressen of op naam gebaseerde adressen op te geven?
Codeertaken
Uw bestaande codebasis wijzigen van IPv4 naar IPv4- en IPv6-interoperabiliteit
- Voer een visuele controle uit van de gebruikersinterface, op zoek naar een element dat afhankelijk is van een specifieke lengte voor de IP-adrestekenreeks. Besturingselementen met de eenvoudig geïdentificeerde decimale notatie met vier secties zijn gemakkelijk te herkennen, maar andere niet. Er kunnen plaatsen zijn waar IP-adressen kunnen worden weergegeven, zoals in dialoogvensters, waar een IPv6-adres mogelijk geen weergaveruimte meer heeft.
- Bij het vinden van een van deze besturingselementen controleert u of het geschikt is om het adres weer te geven bij het gebruik van IPv6. Als het mogelijk is dat IPv4 of IPv6 wordt gebruikt, moet u ervoor zorgen dat de gebruikersinterface geschikt is voor beide. U kunt besturingselementen vervangen of uitbreiden door besturingselementen voor gebruikersinterfaces die een volledig IPv6-adres kunnen weergeven.
- Volg het testen van de gebruikersinterface om ervoor te zorgen dat de wijzigingen die IPv6-adresweergave mogelijk maken, de beoogde bruikbaarheid behouden bij het gebruik van IPv4-adressen. Test ook op locaties voor protocoladresweergave, zoals informatieve dialoogvensters, om ervoor te zorgen dat deze IPv6-adressen correct verwerken.
Verwante onderwerpen