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, die es einem Benutzer ermöglichen, eine IP-Adresse einzugeben, wie in der folgenden Abbildung veranschaulicht.

Allgemeine Ipv4-Adressbox in einer Benutzeroberfläche

Die Adressierung in IPv6 ist aufgrund vieler Faktoren wie Länge, Komplexität und der Bedeutung von Abschnitten innerhalb des IPv6-Adressraums für Änderungen oder Spezifikationen durch Benutzer nicht förderlich. Daher wird die Notwendigkeit, Benutzern die Möglichkeit zu geben, ihre eigene Adresse anzugeben, reduziert. Darüber hinaus ist es aufgrund der Komplexität, die mit der IPv6-Adressierung verbunden ist, Wahrscheinlichkeit, dass Administratoren die Möglichkeit haben, IPv6-Adressinformationen anzugeben, nicht auf Knotenbasis auftreten.

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

Im weiteren Verlauf dieses Abschnitts wird der Unterschied zwischen der Vorhersagbarkeit der IPv4-Adresslänge und der IPv6-Adresslänge erläutert. In diesem Abschnitt wird davon ausgegangen, dass IPv6-Adressen in ihrer hexadezimalen Darstellung angezeigt werden.

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

10.10.256.1

IPv6-Adressen sind aufgrund der IPv6-Adresskonvention, die die Verwendung eines Doppelkolons (::) , um eine Reihe von Nullen darzustellen. Daher entsprechen die folgenden IPv6-Adressdarstellungen der gleichen IPv6-Adresse:

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

Die Möglichkeit, eine Reihe von Nullen mit einem Doppelkolon darzustellen, führt zu einer unvorhersehbaren Länge für einen bestimmten IPv6, sodass Programmierer diese Funktion beim Erstellen von Benutzeroberflächenanzeigen von IPv6-Adressen berücksichtigen müssen. Entwickler sollten sicherlich sicherstellen, dass die Benutzeroberfläche in der Lage ist, IP-Adressen anzuzeigen, die keinen Doppelkolon verwenden, um eine Reihe von Nullen darzustellen (erste Adresse unten), sowie in der Lage zu sein, die längste mögliche IPv6-Adresse (zweite Adresse unten mit der eingebetteten IPv4-Adresse) anzuzeigen, wenn sie ihre IPv6-fähige Benutzeroberfläche erstellen. Beachten Sie auch, dass das Hinzufügen des Bereichsbezeichners (ID) zu der folgenden Adresse die Länge um bis zu 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 zahlenbasierte IPv6-Adressen. Wenn namenbasierte Adressen geeigneter sind, sollten Benennungskonventionen in die Benutzeroberfläche integriert werden, einschließlich aller eingabefehlerbezogenen Überprüfungen, die für die Aufgabe geeignet sind.

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

  • Sollte die Adresse alle Sequenzen von Nullen enthalten oder die Doppeltpunktnotation verwenden?
  • Ist es sinnvoller, eine zahlenbasierte Adressdarstellung oder eine namenbasierte Darstellung zu verwenden?
  • Ist der Benutzer daran interessiert, einen bestimmten Aspekt des Adressierungsschemas zu erkennen, z. B. das Subnetzpräfix, den Bereichsbezeichner oder andere Unterfelder?
  • Ist der Benutzer daran interessiert, andere Aspekte der Adresse zu bestimmen, 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 bei der Entwicklung von IP-Adressbenutzeroberflächen sorgfältig berücksichtigen.

Bewährte Methoden

  • Entwickler müssen den geeigneten Ansatz für jede Benutzeroberfläche berücksichtigen, wenn sie ihre Anwendung zur Unterstützung von IPv6 ändern. Es ist unerlässlich, sicherzustellen, dass die Benutzeroberfläche eine ausreichende Länge zum Anzeigen von IPv6-Adressen enthält, ebenso wie die Bestimmung, ob diese Adresse zahlen- oder namensbasiert 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 Funktionen RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddress und RtlIpv6StringToAddressEx verwendet werden, um zwischen IPv6-Adressen und Zeichenfolgendarstellungen dieser IPv6-Adressen zu konvertieren.

Zu vermeidenden Code

  • Benutzeroberflächenelemente, die von einer IPv4-Adresse abhängen, müssen einer Überprüfung unterzogen werden, und ein Teil dieser Überprüfung sollte beinhalten, ob die von Ihnen bereitgestellten Informationen (unter IPv4) für IPv6 geeignet sind.
  • Die Möglichkeit, eine IP-Adresse anzugeben, sollte auch davon abhängen, ob IPv4 verwendet wird oder ob IPv6 verfügbar ist. Wenn IPv6 verfügbar ist, ist es angemessen, zahlenbasierte (hexadezimale) Adressen oder namenbasierte Adressen anzugeben?

Codierungsaufgaben

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 einem Element, das von einer bestimmten Länge für die IP-Adresszeichenfolge abhängig ist. Steuerelemente mit der leicht zu identifizierenden vierteiligen gepunkteten Dezimalschreibweise sind leicht zu erkennen, andere jedoch nicht. Es kann Stellen geben, an denen IP-Adressen angezeigt werden könnten, z. B. in Dialogfeldern, an denen eine IPv6-Adresse den Anzeigeraum ausgeht.
  2. Überprüfen Sie beim Ermitteln eines dieser Steuerelemente, ob die Adresse bei Verwendung von IPv6 angezeigt werden sollte. 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. Anschließend werden Tests der Benutzeroberfläche durchgeführt, 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 Anzeigeorte für Protokolladressen, z. B. Informationsdialogfelder, um sicherzustellen, dass IPv6-Adressen ordnungsgemäß verarbeitet werden.

IPv6-Leitfaden für Windows Sockets-Anwendungen

Ändern von Datenstrukturen für IPv6-Winsock-Apps

Dual-Stack Sockets für IPv6-Winsock-Anwendungen

Funktionsaufrufe für IPv6-Winsockanwendungen

Verwendung von hartcodierten IPv4-Adressen

Zugrunde liegende Protokolle für IPv6-Winsock-Anwendungen