Problemi relativi all'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 comune in un'interfaccia utente

L'indirizzamento in IPv6, a causa di molti fattori, ad esempio lunghezza, complessità e importanza 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 su base per nodo.

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

La parte restante di questa sezione illustra la differenza tra le considerazioni sulla stima 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 dimensioni, perché seguono rigidamente la notazione decimale tratteggiata, come illustrato nell'esempio di indirizzo seguente:

10.10.256.1

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

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

La capacità di rappresentare una serie di zero con due punti comporta una lunghezza imprevedibile per qualsiasi IPv6 specificata, che richiede ai programmatori di prendere in considerazione questa funzionalità durante la creazione 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 zero (primo indirizzo sotto), nonché essere in grado di visualizzare l'indirizzo IPv6 più lungo possibile possibile (secondo indirizzo sotto, con l'indirizzo IPv4 incorporato) quando si crea la propria interfaccia utente con supporto per IPv6. Si noti anche che l'aggiunta dell'identificatore ambito (ID) all'indirizzo seguente aumenterebbe la lunghezza per quanto un altro undici caratteri:

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

Un'altra importante considerazione è se gli indirizzi basati sul nome sono più appropriati rispetto agli indirizzi IPv6 basati su numero. Se gli indirizzi basati sui nomi sono più appropriati, è consigliabile considerare le convenzioni di denominazione nell'interfaccia utente, inclusa la verifica degli errori di input appropriata per l'attività.

Esistono altre complessità associate alla visualizzazione di indirizzi IPv6 che gli sviluppatori devono prendere in considerazione durante la modifica dell'applicazione e durante la progettazione di rappresentazioni dell'interfaccia utente di indirizzi IPv6. Alcune di queste considerazioni sono le seguenti:

  • L'indirizzo deve contenere tutte le sequenze di zero o usare la notazione a due punti?
  • È più appropriato usare una rappresentazione degli indirizzi 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 caso affermativo, come verranno gestiti e visualizzati? Si distingue tra indirizzi compatibili con IPv4 e indirizzi IPv4 mappati con IPv6 durante la visualizzazione delle informazioni sugli indirizzi 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 durante la modifica dell'applicazione per supportare IPv6. Assicurarsi che l'interfaccia utente contenga una lunghezza sufficiente per visualizzare gli indirizzi IPv6 è imperativa, come è determinare se tale indirizzo è numero o nome basato su.
  • Quando possibile, usare le funzioni Helper Winsock e IP esistenti quando si usano indirizzi IPv6 anziché implementare nuovamente questa logica. Ad esempio, le funzioni RtlIpv6AddressToString, RtlIpv6AddressToStringEx, RtlIpv6StringToAddress e RtlIpv6StringToAddressEx possono essere usate per convertire tra indirizzi IPv6 e rappresentazioni 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 controllo e una parte di tale controllo deve includere se le informazioni fornite (in IPv4) sono appropriate per IPv6.
  • La funzionalità per specificare un indirizzo IP deve dipendere anche dal fatto che IPv4 sia in uso o IPv6 sia disponibile. Se è disponibile IPv6, è necessario specificare indirizzi esadecimali basati su numeri o indirizzi basati su nomi?

Attività di codifica

Per rivedere la code base 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 indirizzi IP. I controlli con la notazione decimale a quattro sezioni identificate facilmente sono facili da individuare, ma altri non sono. Potrebbero essere visualizzati indirizzi IP, ad esempio nelle finestre di dialogo, in cui un indirizzo IPv6 potrebbe uscire dalla sala di visualizzazione.
  2. Dopo aver trovato uno di questi controlli, esaminare 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 che possono visualizzare un intero indirizzo IPv6.
  3. Eseguire il completamento del test dell'interfaccia utente per garantire le modifiche che consentono la visualizzazione degli indirizzi IPv6 mantengono l'usabilità prevista quando si usano gli indirizzi IPv4. Inoltre, testare le posizioni di visualizzazione degli indirizzi del protocollo, ad esempio le finestre di dialogo informativo, per assicurarsi che gestiscano correttamente gli indirizzi IPv6.

Guida IPv6 per le applicazioni Windows Sockets

Modifica delle strutture di dati per le appicazioni Winsock di IPv6

Socket dual stack per applicazioni Winsock IPv6

Chiamate di funzione per applicazioni Winsock IPv6

Uso di indirizzi IPv4 hardcoded

Protocolli sottostanti per le applicazioni Winsock IPv6