Ricezione di traffico sollecitato su Teredo
Molte applicazioni, ad esempio Microsoft Internet Explorer e Microsoft Outlook, avviano solo connessioni a Internet. Per queste applicazioni, Teredo può offrire connettività senza problemi tramite IPv6 in assenza di altre interfacce IPv6. Inoltre, il traffico richiesto può essere ricevuto tramite l'interfaccia Teredo nelle precedenti piattaforme Microsoft Windows XP con Service Pack 2 (SP2) e Windows Server 2003.
La documentazione seguente illustra come queste applicazioni ottengono la connettività e le circostanze in cui viene usato Teredo.
Recupero di un indirizzo di destinazione
Un'applicazione tenta di ottenere l'indirizzo di destinazione usando vari metodi, ad esempio DNS (Domain Name System) o PNRP (Peer Name Resolution Protocol). È possibile che l'applicazione ottenga più indirizzi IP IPv4 e IPv6 usando questi metodi. Le API tipiche usate per ottenere indirizzi IP includono l'API Windows XP GetHostByName e la nuova API di Windows Vista GetAddrInfo. Ad esempio, l'uso dell'API GetAddrInfo con il parametro ai_family impostato su AF_INET6 come hint addrinfo/protocol consente all'utente di eseguire query sui server DNS per indirizzi IPv6 in modo specifico. L'APIDnsQuerycon il tipo DNS_TYPE_AAAA può essere usata anche per eseguire query sui server DNS per i record AAAA.
Stabilire una connessione
Una connessione stabilita con Teredo viene descritta come "facile" perché viene gestita come qualsiasi altra connessione IPv6. La programmazione di un'applicazione non richiede una particolare considerazione per poter utilizzare l'interfaccia Teredo. Quando viene stabilita una connessione tra le interfacce Teredo, un router di inoltro, tipico di 6to4 e altre interfacce native, non è obbligatorio. Tuttavia, Teredo è progettato come ultima risorsa per la transizione alla connessione IPv6.
Nota
Teredo non viene utilizzato se il nome host fornito viene risolto solo negli indirizzi IPv4.
Quando un'applicazione tenta di connettersi a una destinazione usando indirizzi IPv6, si verificherà quanto segue:
L'applicazione ottiene un elenco di indirizzi IPv6 chiamando l'APIGetAdaptersAddresses. Lo stack di Windows Vista restituisce un elenco di tutte le interfacce in base all'ordinamento specificato in RFC 3484. Di conseguenza, le interfacce IPv6 e 6to4 IPv6 verranno elencate prima dell'interfaccia Teredo. Tuttavia, quando la connettività IPv6 o 6to4 nativa non è disponibile, Teredo sarà l'unica interfaccia con supporto IPv6 elencata.
È importante ricordare che un'applicazione può utilizzare qualsiasi interfaccia fornita dallo stack di Windows Vista; tuttavia, l'ordinamento dell'elenco di interfacce restituito farà sì che Teredo venga tentato per ultimo nella maggior parte dei casi.
Prima che Windows Vista tenti una connessione sull'interfaccia Teredo, il sistema operativo garantisce che l'indirizzo IPv6 sia stabilizzato. Questa operazione viene eseguita automaticamente per le connessioni in uscita e non è una considerazione fondamentale per un'applicazione. Nel caso in cui l'applicazione sia necessaria per garantire la stabilità degli indirizzi, è possibile chiamare l'API NotifyStableUnicastIpAddressTable per garantire che l'indirizzo Teredo sia stabile.
Un'interfaccia Teredo tenterà di connettersi a un'altra interfaccia Teredo nella destinazione. Se un'interfaccia Teredo non è presente, viene stabilita una connessione a un indirizzo di destinazione nativo o tramite 6to4 utilizzando un relay specifico per l'host.
È anche possibile che le applicazioni che avviano connessioni a Internet ricevano traffico non richiesto. Per ulteriori dettagli, consultare ricezione di traffico non richiesto attraverso Teredo.
Uso dell'API WSAConnectByName
Chiamando l'API WSAConnectByName, è possibile che un'applicazione si connetta a un nome di destinazione anziché specificare l'indirizzo IP esatto. Lo stack di Windows Vista preferisce IPv6 rispetto a IPv4 e, di conseguenza, tutti i tentativi di connessione verranno eseguiti prima agli indirizzi IPv6.
La chiamata all'API WSAConnectByName ordina tutti gli indirizzi IP di destinazione ottenuti nell'ordine seguente:
- Indirizzo IPv6 nativo
- Indirizzo IP 6to4
- Indirizzo IPv4
- Indirizzo Teredo
Dopo l'ordinamento interno degli indirizzi di destinazione, viene tentata una connessione alla destinazione in base alla route migliore disponibile nell'host locale per l'indirizzo di destinazione. Come indicato dall'ordine degli indirizzi ordinati, se il nome di destinazione viene risolto in un indirizzo IPv4 e Teredo, l'indirizzo IPv4 verrà usato per stabilire la connessione.
L'API WSAConnectByName funziona internamente per trovare la corrispondenza migliore tra gli indirizzi. Questo tentativo si basa sulle route disponibili nell'host locale e sugli indirizzi di destinazione.
A causa dell'attuale assenza di relè Teredo su Internet, è improbabile che le connessioni agli indirizzi IPv6 nativi abbiano esito positivo attraverso l'interfaccia Teredo. Se viene chiamato WSAConnectByName, Windows Vista non eseguirà query AAAA quando Teredo è l'unica interfaccia con supporto IPv6 disponibile. In questo modo si garantisce che gli indirizzi IPv6 nativi non vengano ottenuti come destinazione e che le connessioni vengano tentate su IPv4, con la massima probabilità di esito positivo. Per ottenere gli indirizzi IPv6 quando Teredo è l'unica interfaccia che supporta IPv6, un'applicazione deve usare in modo esplicito l'API DnsQuery per i record AAAA.