Problémy s uživatelským rozhraním pro aplikace rozhraní Winsock IPv6
Jednou z nejobraznějších změn z IPv4 na IPv6 je velikost IP adresy. Mnoho uživatelských rozhraní poskytuje dialogová okna, která uživateli umožňují zadat IP adresu, jak je znázorněno na následujícím obrázku.
Adresování v IPv6 kvůli mnoha faktorům, jako je délka, složitost a význam oddílů v adresním prostoru IPv6, není pro uživatele příznivé. Proto je potřeba uživatelům poskytnout možnost zadat vlastní adresu. Kromě toho kvůli složitosti spojené s přidělováním IPv6 správcům poskytuje možnost zadat informace o adrese IPv6 pravděpodobně na základě jednotlivých uzlů.
Zobrazení adresy IPv6 v uživatelském rozhraní není nepředstavitelné, a proto by vývojáři měli při úpravách aplikace na podporu protokolu IPv6 zvážit proměnlivost velikosti adresy IPv6.
Zbytek této části popisuje rozdíl mezi předvídatelností délky adresy IPv4 a aspekty délky adresy IPv6. V této části se předpokládá, že se adresy IPv6 zobrazují v šestnáctkové reprezentaci.
Adresy IPv4 jsou předvídatelné ve velikosti, protože pevně následují tečkované desetinné notace, jak ukazuje následující příklad adresy:
10.10.256.1
Adresy IPv6 nejsou tak předvídatelné, protože konvence adres IPv6 umožňuje použití dvojtečky (::) představovat řadu nul. Následující reprezentace IPv6 adres se tedy shoduje se stejnou adresou IPv6:
1040:0:0:0:0:0:0:1
1040::1
Schopnost reprezentovat řadu nul s dvojitým dvojtečkam vede k nepředvídatelné délce pro všechny dané IPv6, což vyžaduje programátory, aby tuto funkci zohlednili při vytváření zobrazení IPv6 adres uživatelského rozhraní. Vývojáři by určitě měli zajistit, aby uživatelské rozhraní dokázalo zobrazit IP adresy, které nepoužívají dvojtečku k reprezentaci řady nul (první adresa níže), a také schopnost zobrazit nejdelší možnou adresu IPv6 (druhou adresu níže s vloženou IPv4 adresou) při vytváření uživatelského rozhraní podporujícího IPv6. Všimněte si také, že přidání identifikátoru oboru (ID) na následující adresu by zvýšilo délku o tolik jako dalších jedenáct znaků:
21DA:00D3:0010:2F3B:02AA:00FF:FE28:9C5A
0000:0000:0000:0000:0000:ffff:123.123.123.123
Dalším důležitým aspektem je, jestli jsou adresy založené na názvech vhodnější než adresy IPv6 založené na číslech. Pokud jsou adresy založené na názvech vhodnější, je potřeba vzít v úvahu zásady vytváření názvů do uživatelského rozhraní, včetně kontroly vstupních chyb vhodných pro úlohu.
Existují další složitosti spojené se zobrazením adres IPv6, které musí vývojáři vzít v úvahu při úpravě aplikace a při navrhování reprezentací adres IPv6 uživatelského rozhraní. Některé z těchto aspektů jsou následující:
- Má adresa obsahovat všechny sekvence nul nebo použít dvojtečku?
- Je vhodnější použít reprezentaci adresy založené na číslech nebo reprezentaci založenou na názvu?
- Zajímá se uživatel o rozlišení určitého aspektu schématu adres, například předpony podsítě, identifikátoru oboru nebo jiných podsítí?
- Zajímá se uživatel o určení dalších aspektů adresy, jako je identifikátor TLA, identifikátor NLA nebo identifikátor SLA?
- Bude vaše uživatelské rozhraní schopné rozlišovat vložené adresy IPv6, a pokud ano, jak se tyto adresy budou zpracovávat a zobrazovat? Budete rozlišovat mezi adresami kompatibilními s protokolem IPv4 a adresami IPv4 mapovanými protokolem IPv6 při zobrazení informací o adrese uživateli?
Existují i další aspekty a vývojáři by měli při vývoji uživatelských rozhraní IP adres pečlivě zvážit cílovou skupinu zákazníků.
Osvědčené postupy
- Vývojáři musí při úpravách své aplikace na podporu protokolu IPv6 zvážit vhodný přístup ke každému uživatelskému rozhraní. Zajištění toho, aby uživatelské rozhraní obsahovalo dostatečnou délku pro zobrazení adres IPv6, je nezbytné určit, zda je tato adresa číslo nebo název založená.
- Kdykoli je to možné, místo opětovné implementace této logiky používejte existující funkce pomocné rutiny Winsock a IP. Například RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddressa RtlIpv6StringToAddressEx funkce lze použít k převodu mezi adresami IPv6 a řetězcovými reprezentacemi těchto adres IPv6.
Kód, který se má vyhnout
- Prvky uživatelského rozhraní, které závisejí na adrese velikosti IPv4, musí projít kontrolou a součástí této kontroly by mělo být, zda jsou informace, které jste poskytli (v rámci IPv4), vhodné pro protokol IPv6.
- Možnost zadat IP adresu by také měla záviset na tom, jestli se používá protokol IPv4, nebo je k dispozici protokol IPv6. Pokud je protokol IPv6 dostupný, je vhodné zadat číselné (šestnáctkové) adresy nebo adresy založené na názvech?
Úkoly kódování
Revidovat stávající základ kódu z IPv4 na IPv4
- Proveďte vizuální kontrolu uživatelského rozhraní a vyhledejte libovolný prvek, který je závislý na konkrétní délce řetězce IP adresy. Ovládací prvky s snadno identifikovaným čtyřdílným tečkovaným zápisem desetinných míst jsou snadno rozpoznatelné, ale jiné ne. Můžou se zobrazit IP adresy, například v dialogových oknech, kde se může zobrazit adresa IPv6.
- Při nalezení některého z těchto ovládacích prvků zkontrolujte, zda je vhodné zobrazit adresu při použití protokolu IPv6. Pokud je možné, že se používá protokol IPv4 nebo IPv6, ujistěte se, že uživatelské rozhraní může obsahovat obě možnosti. Nahraďte nebo rozšiřte jakékoli ovládací prvky ovládacími prvky uživatelského rozhraní, které můžou zobrazit celou adresu IPv6.
- Proveďte testování uživatelského rozhraní a ujistěte se, že změny, které umožňují zobrazení adres IPv6, zachová zamýšlenou použitelnost při použití adres IPv4. Otestujte také umístění zobrazení adres protokolu, jako jsou informační dialogová okna, a ujistěte se, že správně zpracovávají adresy IPv6.
Související témata
-
Průvodce IPv6 pro aplikace windows Sockets
-
změna datových struktur pro aplikace winsock IPv6