Freigeben über


Probleme mit der Benutzeroberfläche für IPv6 Winsock-Anwendungen

Eine der offensichtlichsten Änderungen von IPv4 zu IPv6 ist die Größe der IP-Adresse. Viele Benutzeroberflächen bieten Dialogfelder, mit denen ein Benutzer eine IP-Adresse eingeben kann, wie in der folgenden Abbildung dargestellt.

gängiges Ipv4-Adressfeld in einer Benutzeroberfläche

Die Adressierung in IPv6 ist aufgrund vieler Faktoren wie Länge, Komplexität und Bedeutung von Abschnitten im IPv6-Adressraum nicht zur Änderung oder Spezifikation durch Benutzer förderlich. Daher wird die Notwendigkeit, Benutzern die Möglichkeit zu geben, ihre eigene Adresse anzugeben, reduziert. Aufgrund der Komplexität, die mit der IPv6-Adressierung verbunden ist, ist es außerdem nicht wahrscheinlich, dass Administratoren die Möglichkeit haben, IPv6-Adressinformationen anzugeben, nicht pro Knoten auftreten.

Das Anzeigen einer IPv6-Adresse in der Benutzeroberfläche ist nicht unvorstellbar, daher sollten Entwickler die Variabilität bei der Größe einer IPv6-Adresse berücksichtigen, wenn Sie eine Anwendung zur Unterstützung von IPv6 ändern.

Im restlichen Abschnitt wird der Unterschied zwischen IPv4-Adresslängenvorhersage und IPv6-Adresslängenüberlegungen erläutert. In diesem Abschnitt wird davon ausgegangen, dass IPv6-Adressen in ihrer hexadezimalen Darstellung angezeigt werden.

IPv4-Adressen sind vorhersehbar in der Größe, da sie starr auf gepunktete Dezimalnotation folgen, wie das folgende Adressbeispiel veranschaulicht:

10.10.256.1

IPv6-Adressen sind aufgrund der IPv6-Adresskonvention nicht so vorhersehbar, die die Verwendung eines Doppelpunkts (::) für eine Reihe von Nullen ermöglicht. Daher entsprechen die folgenden IPv6-Adressdarstellungen der gleichen IPv6-Adresse:

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

Die Funktion, eine Reihe von Nullen mit einem Doppelpunkt darzustellen, führt zu einer unvorhersehbaren Länge für alle IPv6-Adressen, die programmierern erfordern, diese Funktion beim Erstellen von IPv6-Adressen zu berücksichtigen. Entwickler sollten sicherlich sicherstellen, dass die Benutzeroberfläche in der Lage ist, IP-Adressen anzuzeigen, die keinen Doppelpunkt verwenden, um eine Reihe von Nullen (erste Adresse unten) darzustellen, sowie die Möglichkeit zu haben, die längste mögliche IPv6-Adresse (zweite Adresse unten, mit der eingebetteten IPv4-Adresse) beim Erstellen der IPv6-fähigen Benutzeroberfläche anzuzeigen. Beachten Sie auch, dass das Hinzufügen des Bereichsbezeichners (ID) zur folgenden Adresse die Länge um so viel wie weitere elf Zeichen erhöhen würde:

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

Ein weiterer wichtiger Aspekt ist, ob namenbasierte Adressen besser geeignet sind als nummernbasierte IPv6-Adressen. Wenn namenbasierte Adressen besser geeignet sind, sollten Die Benennungskonventionen in die Benutzeroberfläche integriert werden, einschließlich aller Eingabefehlerüberprüfungen, die für die Aufgabe geeignet sind.

Es gibt weitere Komplexitäten im Zusammenhang mit der Anzeige von IPv6-Adressen, die Entwickler beim Ändern ihrer Anwendung berücksichtigen müssen, und beim Entwerfen von Benutzeroberflächendarstellungen von IPv6-Adressen. Einige dieser Überlegungen sind die folgenden:

  • Sollte die Adresse alle Sequenzen von Nullen enthalten oder die Doppelpunktnotation verwenden?
  • Ist es sinnvoller, eine nummerbasierte Adressdarstellung oder eine namensbasierte Darstellung zu verwenden?
  • Ist der Benutzer daran interessiert, einen bestimmten Aspekt des Adressierungsschemas zu erkennen, z. B. das Subnetzpräfix, die Bereichs-ID oder andere Unterfelder?
  • Ist der Benutzer daran interessiert, andere Aspekte der Adresse zu ermitteln, z. B. den TLA-Bezeichner, den NLA-Bezeichner oder den SLA-Bezeichner?
  • Kann Ihre Benutzeroberfläche eingebettete IPv6-Adressen erkennen, und wenn ja, wie werden diese behandelt und angezeigt? Werden Sie beim Anzeigen von Adressinformationen für den Benutzer zwischen IPv4-kompatiblen Adressen und IPv4-zugeordneten IPv6-Adressen unterscheiden?

Es gibt auch andere Überlegungen, und Entwickler sollten ihre Kundengruppe beim Entwickeln von IP-Adressbenutzeroberflächen sorgfältig berücksichtigen.

Bewährte Methoden

  • Entwickler müssen beim Ändern ihrer Anwendung zur Unterstützung von IPv6 den geeigneten Ansatz für jede Benutzeroberfläche berücksichtigen. Die Sicherstellung, dass die Benutzeroberfläche ausreichend Länge zum Anzeigen von IPv6-Adressen enthält, ist zwingend erforderlich, da bestimmt wird, ob diese Adresse nummer oder namebasiert ist.
  • Verwenden Sie nach Möglichkeit vorhandene Winsock- und IP-Hilfsfunktionen, wenn Sie IPv6-Adressen verwenden, anstatt diese Logik erneut zu implementieren. Beispielsweise können die RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddressund RtlIpv6StringToAddressEx Funktionen verwendet werden, um zwischen IPv6-Adressen und Zeichenfolgendarstellungen dieser IPv6-Adressen zu konvertieren.

Code, der vermieden werden soll

  • Benutzeroberflächenelemente, die von einer IPv4-Größe abhängig sind, müssen einer Prüfung unterzogen werden, und ein Teil dieser Prüfung sollte enthalten, ob die von Ihnen bereitgestellten Informationen (unter IPv4) für IPv6 geeignet sind.
  • Die Funktion zum Angeben einer IP-Adresse sollte auch davon abhängen, ob IPv4 verwendet wird oder IPv6 verfügbar ist. Wenn IPv6 verfügbar ist, ist es sinnvoll, nummernbasierte (hexadezimale) Adressen oder namenbasierte Adressen anzugeben?

Codieren von Aufgaben

So überarbeiten Sie Ihre vorhandene Codebasis von IPv4 auf IPv4- und IPv6-Interoperabilität

  1. Führen Sie eine visuelle Überprüfung der Benutzeroberfläche durch, und suchen Sie nach jedem Element, das von einer bestimmten Länge für die IP-Adresszeichenfolge abhängig ist. Steuerelemente mit der leicht identifizierten vierabschnittigen gepunkteten Dezimalnotation sind leicht zu erkennen, andere sind jedoch nicht. Möglicherweise gibt es Orte, an denen IP-Adressen angezeigt werden können, z. B. in Dialogfeldern, wo eine IPv6-Adresse möglicherweise nicht mehr angezeigt wird.
  2. Überprüfen Sie bei der Suche nach einem dieser Steuerelemente, ob die Adresse bei Verwendung von IPv6 angezeigt werden soll. Wenn es möglich ist, dass IPv4 oder IPv6 verwendet wird, stellen Sie sicher, dass die Benutzeroberfläche beides aufnehmen kann. Ersetzen oder erweitern Sie alle Steuerelemente durch Benutzeroberflächensteuerelemente, die eine gesamte IPv6-Adresse anzeigen können.
  3. Folgen Sie den Tests der Benutzeroberfläche, um sicherzustellen, dass die Änderungen, die die IPv6-Adressanzeige ermöglichen, die beabsichtigte Benutzerfreundlichkeit bei der Verwendung von IPv4-Adressen beibehalten. Testen Sie außerdem die Speicherorte der Protokolladressenanzeige, z. B. Informationsdialogfelder, um sicherzustellen, dass sie IPv6-Adressen ordnungsgemäß verarbeiten.

IPv6-Handbuch für Windows Sockets-Anwendungen

Ändern von Datenstrukturen für IPv6 Winsock-Appications

Dual-Stack Sockets für IPv6 Winsock-Anwendungen

Funktionsaufrufe für IPv6 Winsock-Anwendungen

Verwendung von hartcodierten IPv4-Adressen

zugrunde liegenden Protokolle für IPv6 Winsock-Anwendungen