Problemy z interfejsem użytkownika dla aplikacji Winsock protokołu IPv6
Jednym z najbardziej oczywistych zmian z IPv4 do IPv6 jest rozmiar adresu IP. Wiele interfejsów użytkownika udostępnia okna dialogowe, które umożliwiają użytkownikowi wprowadzenie adresu IP, jak pokazano na poniższym rysunku.
Adresowanie w IPv6 ze względu na wiele czynników, takich jak długość, złożoność i znaczenie sekcji w przestrzeni adresowej IPv6, nie sprzyja modyfikacji ani specyfikacji przez użytkowników. W związku z tym potrzeba zapewnienia użytkownikom możliwości określania własnego adresu jest ograniczona. Ponadto ze względu na złożoność związaną z adresowaniem IPv6, zapewnienie administratorom możliwości określania informacji o adresach IPv6 prawdopodobnie nie wystąpi na podstawie węzła.
Wyświetlanie adresu IPv6 w interfejsie użytkownika nie jest niewyobrażalne, dlatego deweloperzy powinni rozważyć zmienność rozmiaru adresu IPv6 podczas modyfikowania aplikacji w celu obsługi protokołu IPv6.
W pozostałej części tej sekcji omówiono różnicę między przewidywalnością długości adresów IPv4 a zagadnieniami dotyczącymi długości adresów IPv6. W tej sekcji zakłada się, że adresy IPv6 są wyświetlane w ich reprezentacji szesnastkowej.
Adresy IPv4 są przewidywalne w rozmiarze, ponieważ sztywno podążają kropkowaną notacją dziesiętną, jak pokazano w poniższym przykładzie adresu:
10.10.256.1
Adresy IPv6 nie są tak przewidywalne ze względu na konwencję adresów IPv6, która umożliwia użycie dwukropka (::) do reprezentowania serii zer. W związku z tym następujące reprezentacje adresów IPv6 są równoważne z tym samym adresem IPv6:
1040:0:0:0:0:0:0:1
1040::1
Możliwość reprezentowania serii zer z podwójnym dwukropkiem powoduje nieprzewidywalną długość dla danego protokołu IPv6, co wymaga od programistów uwzględnienia tej możliwości podczas tworzenia interfejsu użytkownika wyświetlania adresów IPv6. Z pewnością deweloperzy powinni upewnić się, że interfejs użytkownika może wyświetlać adresy IP, które nie używają dwukropka do reprezentowania serii zer (pierwszy adres poniżej), a także mieć możliwość wyświetlania najdłuższego możliwego adresu IPv6 (drugi adres poniżej, z osadzonym adresem IPv4) podczas tworzenia interfejsu użytkownika obsługującego protokół IPv6. Należy również pamiętać, że dodanie identyfikatora zakresu (ID) do następującego adresu zwiększyłoby jego długość o tyle o kolejne jedenaście znaków:
21DA:00D3:0010:2F3B:02AA:00FF:FE28:9C5A
0000:0000:0000:0000:0000:ffff:123.123.123.123
Innym ważnym zagadnieniem jest to, czy adresy oparte na nazwach są bardziej odpowiednie niż adresy IPv6 oparte na numerach. Jeśli adresy oparte na nazwach są bardziej odpowiednie, należy uwzględnić konwencje nazewnictwa w interfejsie użytkownika, w tym wszelkie dane wejściowe sprawdzania błędów odpowiednie dla zadania.
Istnieją inne złożoności związane z wyświetlaniem adresów IPv6, które deweloperzy muszą wziąć pod uwagę podczas modyfikowania aplikacji oraz podczas projektowania reprezentacji interfejsu użytkownika adresów IPv6. Niektóre z tych zagadnień są następujące:
- Czy adres powinien zawierać wszystkie sekwencje zer lub użyć notacji dwukropka?
- Czy bardziej właściwe jest użycie reprezentacji adresów opartych na liczbie lub reprezentacji opartej na nazwach?
- Czy użytkownik jest zainteresowany rozpoznawaniem określonego aspektu schematu adresowania, takiego jak prefiks podsieci, identyfikator zakresu lub inne pola podrzędne?
- Czy użytkownik jest zainteresowany określeniem innych aspektów adresu, takich jak identyfikator TLA, identyfikator NLA lub identyfikator umowy SLA?
- Czy interfejs użytkownika będzie w stanie rozpoznać osadzone adresy IPv6, a jeśli tak, jak będą one obsługiwane i wyświetlane? Czy podczas wyświetlania informacji o adresach użytkownika rozpoznasz adresy zgodne z protokołem IPv4 i adresy IPv4 zamapowane na adresy IPv4?
Istnieją również inne zagadnienia, a deweloperzy powinni uważnie rozważyć odbiorców swoich klientów podczas opracowywania interfejsów użytkownika adresów IP.
Najlepsze rozwiązania
- Deweloperzy muszą rozważyć odpowiednie podejście do każdego interfejsu użytkownika podczas modyfikowania aplikacji w celu obsługi protokołu IPv6. Upewnienie się, że interfejs użytkownika zawiera wystarczającą długość do wyświetlania adresów IPv6, jest konieczne, ponieważ określa, czy ten adres jest numerem, czy nazwą.
- Jeśli to możliwe, użyj istniejących funkcji winsock i pomocnika IP podczas korzystania z adresów IPv6 zamiast ponownie implementować tę logikę. Na przykład RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddressi RtlIpv6StringToAddressEx funkcji można przekonwertować między adresami IPv6 i reprezentacjami ciągów tych adresów IPv6.
Kod, aby uniknąć
- Elementy interfejsu użytkownika, które zależą od adresu IPv4, muszą zostać poddane kontroli, a część tej kontroli powinna zawierać, czy informacje, które podajesz (w ramach protokołu IPv4) są odpowiednie dla protokołu IPv6.
- Możliwość określenia adresu IP powinna być również zależna od tego, czy protokół IPv4 jest używany, czy jest dostępny protokół IPv6. Jeśli protokół IPv6 jest dostępny, czy należy określić adresy szesnastkowe lub adresy oparte na nazwach?
Zadania kodowania
Aby skorygować istniejącą bazę kodu z protokołu IPv4 do współdziałania IPv4 i IPv6
- Wykonaj przegląd wizualny interfejsu użytkownika, wyszukując dowolny element zależny od określonej długości ciągu adresu IP. Kontrolki z łatwo zidentyfikowaną notacją kropkowaną w czterech sekcjach są łatwe do wykrycia, ale inne nie. Mogą istnieć miejsca, w których mogą być wyświetlane adresy IP, takie jak w oknach dialogowych, gdzie adres IPv6 może zabraknąć miejsca wyświetlania.
- Po znalezieniu dowolnego z tych kontrolek sprawdź, czy jest to właściwe, aby wyświetlić adres podczas korzystania z protokołu IPv6. Jeśli jest możliwe, że jest używany protokół IPv4 lub IPv6, upewnij się, że interfejs użytkownika może obsługiwać dowolny z nich. Zastąp lub rozszerz dowolne kontrolki za pomocą kontrolek interfejsu użytkownika, które mogą wyświetlać cały adres IPv6.
- Postępuj zgodnie z testami interfejsu użytkownika, aby upewnić się, że zmiany, które umożliwiają wyświetlanie adresów IPv6, zachowają odpowiednią użyteczność podczas korzystania z adresów IPv4. Ponadto przetestuj lokalizacje wyświetlania adresów protokołu, takie jak okna dialogowe informacyjne, aby upewnić się, że prawidłowo obsługują adresy IPv6.
Tematy pokrewne
-
przewodnik IPv6 dla aplikacji Windows Sockets
-
zmienianie struktur danych dla IPv6 Winsock Appications
-
podstawowych protokołów dla aplikacji Winsock protokołu IPv6