Recepción de tráfico solicitado a través de Teredo

Muchas aplicaciones como Microsoft Internet Explorer y Microsoft Outlook solo inician conexiones a Internet. Para estas aplicaciones, Teredo puede proporcionar conectividad sin problemas a través de IPv6 en ausencia de otras interfaces IPv6. Además, el tráfico solicitado se puede recibir a través de la interfaz Teredo en las plataformas anteriores de Microsoft Windows XP con Service Pack 2 (SP2) y Windows Server 2003.

En la siguiente documentación se explica cómo estas aplicaciones logran la conectividad y las circunstancias en las que se usa Teredo.

Obtención de una dirección de destino

Una aplicación intenta obtener la dirección de destino mediante varios métodos, como el Sistema de nombres de dominio (DNS) o el Protocolo de resolución de nombres del mismo nivel (PNRP). Es posible que la aplicación obtenga varias direcciones IP IPv4 e IPv6 mediante estos métodos. Las API típicas que se usan para obtener direcciones IP incluyen getHostByName de la API de Windows XP y la nueva API de Windows Vista GetAddrInfo. Por ejemplo, el uso de la API GetAddrInfo con el parámetro ai_family establecido en AF_INET6 como sugerencia addrinfo/protocol permite al usuario consultar servidores DNS para direcciones IPv6 específicamente. La API DnsQuery con el tipo DNS_TYPE_AAAA también se puede usar para consultar los servidores DNS de los registros AAAA.

Establecer una conexión

Una conexión establecida con Teredo se describe como "sin problemas" porque se controla como cualquier otra conexión IPv6. La programación de una aplicación no requiere una consideración especial para poder usar la interfaz Teredo. Cuando se establece una conexión entre interfaces teredo, no es necesario un enrutador de retransmisión, típico de 6to4 y otras interfaces nativas. Sin embargo, Teredo está diseñado como una tecnología de transición de último recurso para la conectividad IPv6.

Nota

Teredo no se utiliza si el nombre de host proporcionado se resuelve solo en direcciones IPv4.

 

Cuando una aplicación intenta conectarse a un destino mediante direcciones IPv6, se producirá lo siguiente:

  • La aplicación obtiene una lista de direcciones IPv6 mediante una llamada a la API GetAdaptersAddresses . La pila de Windows Vista devuelve una lista de todas las interfaces en función del criterio de ordenación especificado en RFC 3484. Como resultado, las interfaces IPv6 y 6to4 IPv6 se mostrarán antes de la interfaz Teredo. Sin embargo, cuando la conectividad IPv6 o 6to4 nativa no está disponible, Teredo será la única interfaz compatible con IPv6 enumerada.

    Es importante recordar que una aplicación puede usar cualquier interfaz proporcionada por la pila de Windows Vista, pero la ordenación de la lista de interfaz devuelta suele dar lugar a que Teredo se intente en último lugar.

  • Antes de que Windows Vista intente una conexión a través de la interfaz Teredo, el sistema operativo garantiza que la dirección IPv6 se haya estabilizado. Esto se hace automáticamente para las conexiones salientes y no es una consideración fundamental para una aplicación. En caso de que la aplicación sea necesaria para garantizar la estabilidad de la dirección, se puede llamar a la API NotifyStableUnicastIpAddressTable para asegurarse de que la dirección teredo es estable.

  • Una interfaz Teredo intentará conectarse a otra interfaz teredo en el destino. Si una interfaz Teredo no está presente, se establece una conexión con una dirección de destino nativa o 6to4 a través de una retransmisión específica del host.

También es posible que las aplicaciones que inicien conexiones a Internet reciban tráfico no solicitado. Para obtener más información, consulte Recepción de tráfico no solicitado a través de Teredo.

Uso de la API WSAConnectByName

Al llamar a la API WSAConnectByName, es posible que una aplicación se conecte a un nombre de destino en lugar de especificar la dirección IP exacta. La pila de Windows Vista prefiere IPv6 sobre IPv4 y, como resultado, los intentos de conexión se realizarán primero en las direcciones IPv6.

Al llamar a la API WSAConnectByName, se ordenarán todas las direcciones IP de destino obtenidas en el orden siguiente:

  • Dirección IPv6 nativa
  • Dirección IP 6to4
  • Dirección IPv4
  • Dirección Teredo

Una vez que las direcciones de destino se ordenan internamente, se intenta establecer una conexión con el destino en función de la mejor ruta disponible en el host local para la dirección de destino. Como se indica en el orden de las direcciones ordenadas, si el nombre de destino se resuelve en una dirección IPv4 y Teredo, la dirección IPv4 se usará para establecer la conexión.

La API WSAConnectByName funciona internamente para encontrar la mejor coincidencia entre direcciones. Este intento se basa en las rutas disponibles en el host local y las direcciones de destino.

Debido a la ausencia actual de retransmisiones de Teredo en Internet, es poco probable que las conexiones a direcciones IPv6 nativas se realicen correctamente en la interfaz Teredo. Si se llama a WSAConnectByName, Windows Vista no emitirá consultas AAAA cuando Teredo sea la única interfaz compatible con IPv6 disponible. Esto garantiza que las direcciones IPv6 nativas no se obtienen como destino y que las conexiones se intentan a través de IPv4, lo que tiene la mayor probabilidad de éxito. Para obtener direcciones IPv6 cuando Teredo es la única interfaz compatible con IPv6, una aplicación debe usar explícitamente la API DnsQuery para registros AAAA.