次の方法で共有


Teredo 経由で要請されたトラフィックを受信する

Microsoft インターネット エクスプローラーや Microsoft Outlook などの多くのアプリケーションは、インターネットへの接続のみを開始します。 これらのアプリケーションでは、他の IPv6 インターフェイスがない場合でも、 Teredo は IPv6 経由のシームレスな接続を提供できます。 さらに、要求されたトラフィックは、以前の Microsoft Windows XP Service Pack 2 (SP2) および Windows Server 2003 プラットフォームで Teredo インターフェイス経由で受信できます。

次のドキュメントでは、これらのアプリケーションが接続を実現する方法と、Teredo を使用する状況について説明します。

宛先アドレスの取得

アプリケーションは、ドメイン ネーム システム (DNS) やピア名解決プロトコル (PNRP) などのさまざまな方法を使用して宛先アドレスの取得を試みます。 アプリケーションでは、これらの方法を使用して複数の IPv4 および IPv6 IP アドレスを取得できます。 IP アドレスの取得に使用される一般的な API には、Windows XP API GetHostByName と新しい Windows Vista API GetAddrInfo が含まれます。 たとえば、getAddrInfo API を使用し、 ai_family パラメーターを AF_INET6 に設定すると、addrinfo/protocol ヒントを使用すると、ユーザーは DNS サーバーに対して具体的に IPv6 アドレスのクエリを実行できます。 種類が DNS_TYPE_AAAA の DnsQuery API を使用して、DNS サーバーに AAAA レコードのクエリを実行することもできます。

接続の確立

Teredo で確立された接続は、他の IPv6 接続と同様に処理されるため、"シームレス" と記述されます。 アプリケーションのプログラミングでは、Teredo インターフェイスを利用できるようにするために特別な考慮事項は必要ありません。 Teredo インターフェイス間で接続を確立する場合、6to4 やその他のネイティブ インターフェイスに典型的なリレー ルーターは必要ありません。 ただし、Teredo は IPv6 接続のための最後の手段移行テクノロジとして設計されています。

Note

指定されたホスト名が IPv4 アドレスのみに解決される場合、Teredo は使用されません。

 

アプリケーションが IPv6 アドレスを使用して宛先に接続しようとすると、次の処理が行われます。

  • アプリケーションは 、GetAdaptersAddresses API を呼び出して IPv6 アドレスの一覧を取得します。 Windows Vista スタックは、 RFC 3484 で指定された並べ替え順序に基づいて、すべてのインターフェイスの一覧を返します。 その結果、IPv6 および 6to4 IPv6 インターフェイスは Teredo インターフェイスの前に一覧表示されます。 ただし、ネイティブ IPv6 または 6to4 接続を使用できない場合、Teredo のみが IPv6 対応インターフェイスとして表示されます。

    アプリケーションは Windows Vista スタックによって提供される任意のインターフェイスを使用できることを覚えておくことが重要ですが、返されるインターフェイス リストの順序は、多くの場合、Teredo が最後に試行されます。

  • Windows Vista が Teredo インターフェイス経由で接続を試みる前に、オペレーティング システムは IPv6 アドレスが安定していることを確認します。 これは送信接続に対して自動的に行われ、アプリケーションにとって重要な考慮事項ではありません。 アプリケーションでアドレスの安定性を保証する必要がある場合は、 NotifyStableUnicastIpAddressTable API を呼び出して Teredo アドレスが安定していることを確認できます。

  • Teredo インターフェイスは、宛先にある別の Teredo インターフェイスへの接続を試みます。 Teredo インターフェイスが存在しない場合、ホスト固有のリレーを介してネイティブまたは 6to4 宛先アドレスを使用して接続が確立されます。

また、インターネットへの接続を開始するアプリケーションは、未承諾のトラフィックを受信することもできます。 詳細については、「 Teredo 経由の未承諾トラフィックの受信」を参照してください。

WSAConnectByName API の使用

WSAConnectByName API を呼び出すことで、正確な IP アドレスを指定する代わりに、アプリケーションが宛先名に接続できます。 Windows Vista スタックは IPv4 よりも IPv6 を優先するため、IPv6 アドレスへの接続が最初に試行されます。

WSAConnectByName API を呼び出すと、取得したすべての宛先 IP アドレスが次の順序で並べ替えられます。

  • ネイティブ IPv6 アドレス
  • 6to4 IP アドレス
  • IPv4 アドレス
  • Teredo アドレス

宛先アドレスが内部的に並べ替えられた後、宛先アドレスのローカル ホストで使用可能な最適なルートに基づいて、宛先への接続が試行されます。 並べ替えられたアドレスの順序で示されているように、宛先名が IPv4 アドレスと Teredo アドレスに解決される場合は、IPv4 アドレスを使用して接続が確立されます。

WSAConnectByName API は内部的に機能し、アドレス間の最適な一致を見つけます。 この試行は、ローカル ホストと宛先アドレスで使用可能なルートに基づいています。

インターネット上に Teredo リレーが現在存在しないため、Teredo インターフェイス経由でネイティブ IPv6 アドレスへの接続が成功する可能性は低くなります。 WSAConnectByName が呼び出された場合、Teredo が使用可能な唯一の IPv6 対応インターフェイスである場合、Windows Vista は AAAA クエリを発行しません。 これにより、ネイティブ IPv6 アドレスが宛先として取得されず、IPv4 経由で接続が試行され、成功する可能性が最も高くなります。 Teredo が唯一の IPv6 対応インターフェイスである場合に IPv6 アドレスを取得するには、アプリケーションで AAAA レコード用の DnsQuery API を明示的に使用する必要があります。