Condividi tramite


Problemi dell'interfaccia utente per le applicazioni Winsock IPv6

Una delle modifiche più ovvie da IPv4 a IPv6 è la dimensione dell'indirizzo IP. Molte interfacce utente forniscono finestre di dialogo che consentono a un utente di immettere un indirizzo IP, come illustrato nella figura seguente.

casella di indirizzi ipv4 comuni in un'interfaccia utente

L'indirizzamento in IPv6, a causa di molti fattori come lunghezza, complessità e significato delle sezioni all'interno dello spazio indirizzi IPv6, non è favorevole alla modifica o alla specifica da parte degli utenti. Pertanto, la necessità di fornire agli utenti la possibilità di specificare il proprio indirizzo è ridotta. Inoltre, a causa della complessità associata all'indirizzamento IPv6, fornire agli amministratori la possibilità di specificare le informazioni sugli indirizzi IPv6 non è probabile che si verifichino per ogni nodo.

La visualizzazione di un indirizzo IPv6 nell'interfaccia utente non è inconcepibile e pertanto gli sviluppatori devono considerare la variabilità delle dimensioni di un indirizzo IPv6 quando si modifica un'applicazione per supportare IPv6.

Nella parte restante di questa sezione viene illustrata la differenza tra le considerazioni sulla prevedibilità della lunghezza degli indirizzi IPv4 e sulla lunghezza degli indirizzi IPv6. Questa sezione presuppone che gli indirizzi IPv6 vengano visualizzati nella relativa rappresentazione esadecimale.

Gli indirizzi IPv4 sono prevedibili in quanto seguono rigidamente la notazione decimale punteggiata, come illustrato nell'esempio di indirizzo seguente:

10.10.256.1

Gli indirizzi IPv6 non sono così prevedibili, a causa della convenzione di indirizzo IPv6 che consente l'uso di due punti (::) per rappresentare una serie di zeri. Di conseguenza, le rappresentazioni di indirizzi IPv6 seguenti equivalgono allo stesso indirizzo IPv6:

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

La capacità di rappresentare una serie di zeri con due due punti comporta una lunghezza imprevedibile per qualsiasi IPv6 specificato, che richiede ai programmatori di prendere in considerazione questa funzionalità quando si creano visualizzazioni dell'interfaccia utente di indirizzi IPv6. Certamente, gli sviluppatori devono assicurarsi che l'interfaccia utente sia in grado di visualizzare gli indirizzi IP che non usano due punti per rappresentare una serie di zeri (primo indirizzo riportato di seguito), nonché di poter visualizzare l'indirizzo IPv6 più lungo possibile (secondo indirizzo di seguito, con l'indirizzo IPv4 incorporato) durante la creazione dell'interfaccia utente con supporto per IPv6. Si noti anche che l'aggiunta dell'identificatore di ambito (ID) all'indirizzo seguente aumenterebbe la sua lunghezza fino a un altro undici caratteri:

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

Un'altra considerazione importante è se gli indirizzi basati sul nome sono più appropriati rispetto agli indirizzi IPv6 basati su numeri. Se gli indirizzi basati sul nome sono più appropriati, è necessario prendere in considerazione le convenzioni di denominazione nell'interfaccia utente, incluso qualsiasi controllo degli errori di input appropriato per l'attività.

Esistono altre complessità associate alla visualizzazione degli indirizzi IPv6 che gli sviluppatori devono prendere in considerazione durante la modifica dell'applicazione e quando si progettano rappresentazioni dell'interfaccia utente di indirizzi IPv6. Di seguito sono riportate alcune considerazioni:

  • L'indirizzo deve contenere tutte le sequenze di zeri o usare la notazione a due punti?
  • È più appropriato usare una rappresentazione di indirizzo basata su numeri o una rappresentazione basata sul nome?
  • L'utente è interessato a distinguere un determinato aspetto dello schema di indirizzamento, ad esempio il prefisso della subnet, l'identificatore di ambito o altri campi secondari?
  • L'utente è interessato a determinare altri aspetti dell'indirizzo, ad esempio l'identificatore TLA, l'identificatore NLA o l'identificatore del contratto di servizio?
  • L'interfaccia utente sarà in grado di distinguere gli indirizzi IPv6 incorporati e, in tal caso, come verranno gestiti e visualizzati? È possibile distinguere tra indirizzi compatibili con IPv4 e indirizzi IPv4 mappati con IPv6 durante la visualizzazione delle informazioni sull'indirizzo all'utente?

Esistono anche altre considerazioni e gli sviluppatori devono considerare attentamente il pubblico dei clienti durante lo sviluppo di interfacce utente degli indirizzi IP.

Procedure consigliate

  • Gli sviluppatori devono considerare l'approccio appropriato a ogni interfaccia utente quando si modifica l'applicazione per supportare IPv6. Verificare che l'interfaccia utente contenga una lunghezza sufficiente per visualizzare gli indirizzi IPv6 è imperativa, come per determinare se tale indirizzo è basato su numero o nome.
  • Quando possibile, usare le funzioni helper WINSock e IP esistenti quando si usano indirizzi IPv6 anziché implementare nuovamente questa logica. Ad esempio, il RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddresse funzioni RtlIpv6StringToAddressEx possono essere usate per convertire tra indirizzi IPv6 e rappresentazioni di stringa di questi indirizzi IPv6.

Codice da evitare

  • Gli elementi dell'interfaccia utente che dipendono da un indirizzo di dimensioni IPv4 devono essere sottoposti a esame e parte di tale esame deve includere se le informazioni fornite (in IPv4) sono appropriate per IPv6.
  • La possibilità di specificare un indirizzo IP deve dipendere anche dal fatto che IPv4 sia in uso o che sia disponibile IPv6. Se IPv6 è disponibile, è appropriato specificare indirizzi esadecimali (esadecimali) o indirizzi basati su nomi?

Attività di codifica

Per rivedere la codebase esistente da IPv4 a IPv4 e interoperabilità IPv6

  1. Eseguire una revisione visiva dell'interfaccia utente, cercando qualsiasi elemento dipendente da una lunghezza specifica per la stringa di indirizzo IP. I controlli con la notazione decimale punteggiata a quattro sezioni facilmente identificate sono facili da individuare, ma altri non lo sono. Potrebbero essere presenti posizioni in cui è possibile visualizzare gli indirizzi IP, ad esempio nelle finestre di dialogo, in cui un indirizzo IPv6 potrebbe esaurirsi dalla sala di visualizzazione.
  2. Dopo aver trovato uno di questi controlli, controllare se è appropriato visualizzare l'indirizzo quando si usa IPv6. Se è possibile che sia in uso IPv4 o IPv6, assicurarsi che l'interfaccia utente possa essere usata. Sostituire o aumentare qualsiasi controllo con controlli dell'interfaccia utente in grado di visualizzare un intero indirizzo IPv6.
  3. Eseguire il test dell'interfaccia utente per assicurarsi che le modifiche che abilitano la visualizzazione degli indirizzi IPv6 mantengano l'usabilità prevista quando si usano indirizzi IPv4. Inoltre, testare i percorsi di visualizzazione degli indirizzi del protocollo, ad esempio le finestre di dialogo informative, per assicurarsi che gestiscano correttamente gli indirizzi IPv6.

Guida IPv6 per le applicazioni Windows Sockets

modifica delle strutture di dati per le app per IPv6 Winsock

Dual-Stack Socket per le applicazioni Winsock IPv6

chiamate di funzione per le applicazioni Winsock IPv6

uso di indirizzi IPv4 hardcoded

protocolli sottostanti per le applicazioni Winsock IPv6