Ricezione del traffico richiesto tramite Teredo
Molte applicazioni come Microsoft Internet Explorer e Microsoft Outlook avviano solo le connessioni a Internet. Per queste applicazioni, Teredo può offrire connettività semplice tramite IPv6 in assenza di altre interfacce IPv6. Inoltre, il traffico richiesto può essere ricevuto tramite l'interfaccia Teredo nelle versioni precedenti di Microsoft Windows XP con Service Pack 2 (SP2) e le piattaforme Windows Server 2003.
La documentazione seguente illustra come queste applicazioni ottengono la connettività e le circostanze in cui viene usata Teredo.
Recupero di un indirizzo di destinazione
Un'applicazione tenta di ottenere l'indirizzo di destinazione usando vari metodi, ad esempio Domain Name System (DNS) o Peer Name Resolution Protocol (PNRP). È 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 Windows Vista GetAddrInfo. Ad esempio, usando l'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 gli indirizzi IPv6 in modo specifico. L'API DnsQuery con il tipo DNS_TYPE_AAAA può essere usata anche per eseguire query sui server DNS per i record AAAA.
Istituzione di 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 particolare considerazione per poter usare l'interfaccia Teredo. Quando viene stabilita una connessione tra interfacce Teredo, un router di inoltro, tipico di 6to4 e altre interfacce native, non è necessario. Tuttavia, Teredo è progettato come ultima tecnologia di transizione di resort per la connettività IPv6.
Nota
Teredo non viene usato se il nome host specificato viene risolto solo in 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'API GetAdaptersAddresses . Lo stack di Windows Vista restituisce un elenco di tutte le interfacce in base all'ordine di 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 compatibile con IPv6 elencata.
È importante ricordare che un'applicazione può usare qualsiasi interfaccia fornita dallo stack di Windows Vista, tuttavia l'ordinamento dell'elenco di interfacce restituito comporta spesso Teredo tentativo di ultimo tentativo.
Prima che Windows Vista tenti una connessione sull'interfaccia Teredo, il sistema operativo garantisce che l'indirizzo IPv6 sia stato stabilizzato. Questa operazione viene eseguita automaticamente per le connessioni in uscita e non è una considerazione fondamentale per un'applicazione. Se l'applicazione è necessaria per garantire la stabilità degli indirizzi, è possibile chiamare l'API NotifyStableUnicastIpAddressTable per assicurarsi 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 con un indirizzo di destinazione nativo o 6to4 tramite un inoltro specifico dell'host.
È anche possibile che le applicazioni che avviano connessioni a Internet ricevano traffico non richiesto. Per altre informazioni, vedere Ricezione di traffico non richiesto tramite Teredo.
Uso dell'API WSAConnectByName
Chiamando l'API WSAConnectByName, è possibile che un'applicazione si connetti a un nome di destinazione anziché specificare l'indirizzo IP esatto. Lo stack di Windows Vista preferisce IPv6 su IPv4 e, di conseguenza, tutti i tentativi di connessione verranno effettuati 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
- IPv4 address (Indirizzo IPv4)
- Teredo indirizzo
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, verrà usato l'indirizzo IPv4 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'assenza corrente di inoltro Teredo su Internet, le connessioni agli indirizzi IPv6 nativi non possono avere esito positivo sull'interfaccia Teredo. Se viene chiamato WSAConnectByName, Windows Vista non eseguirà query AAAA quando Teredo è l'unica interfaccia compatibile con IPv6 disponibile. Ciò garantisce che gli indirizzi IPv6 nativi non vengano ottenuti come destinazione e che le connessioni vengano tentate su IPv4, che ha la maggiore probabilità di successo. Per ottenere indirizzi IPv6 quando Teredo è l'unica interfaccia compatibile con IPv6, un'applicazione deve usare in modo esplicito l'API DnsQuery per i record AAAA.