Empfangen von angefordertem Datenverkehr über Teredo

Viele Anwendungen wie Microsoft Internet Explorer und Microsoft Outlook initiieren nur Verbindungen mit dem Internet. Für diese Anwendungen kann Teredo eine nahtlose Konnektivität über IPv6 bereitstellen, wenn keine anderen IPv6-Schnittstellen vorhanden sind. Darüber hinaus kann angeforderter Datenverkehr über die Teredo-Schnittstelle auf den früheren Plattformen Microsoft Windows XP mit Service Pack 2 (SP2) und Windows Server 2003 empfangen werden.

In der folgenden Dokumentation wird erläutert, wie diese Anwendungen Konnektivität erreichen und unter welchen Umständen Teredo verwendet wird.

Abrufen einer Zieladresse

Eine Anwendung versucht, die Zieladresse mit verschiedenen Methoden wie Domain Name System (DNS) oder Peer Name Resolution Protocol (PNRP) abzurufen. Mit diesen Methoden kann die Anwendung mehrere IPv4- und IPv6-IP-Adressen abrufen. Zu den typischen APIs, die zum Abrufen von IP-Adressen verwendet werden, gehören die Windows XP-API GetHostByName und die neue Windows Vista-API GetAddrInfo. Die Verwendung der GetAddrInfo-API mit dem ai_family-Parameter , der auf AF_INET6 als addrinfo/protocol-Hinweis festgelegt ist, ermöglicht es dem Benutzer beispielsweise, DNS-Server speziell nach IPv6-Adressen abzufragen. Die DnsQuery-API mit dem Typ DNS_TYPE_AAAA kann auch verwendet werden, um die DNS-Server nach AAAA-Einträgen abzufragen.

Herstellen einer Verbindung

Eine mit Teredo hergestellte Verbindung wird als "nahtlos" beschrieben, da sie wie jede andere IPv6-Verbindung behandelt wird. Die Programmierung einer Anwendung erfordert keine besondere Berücksichtigung, um die Teredo-Schnittstelle nutzen zu können. Wenn eine Verbindung zwischen Teredo-Schnittstellen hergestellt wird, ist kein Relayrouter erforderlich, der typisch für 6to4 und andere native Schnittstellen ist. Teredo ist jedoch als letzte Übergangstechnologie für IPv6-Konnektivität konzipiert.

Hinweis

Teredo wird nicht verwendet, wenn der angegebene Hostname nur in IPv4-Adressen aufgelöst wird.

 

Wenn eine Anwendung versucht, mithilfe von IPv6-Adressen eine Verbindung mit einem Ziel herzustellen, tritt Folgendes auf:

  • Die Anwendung ruft eine Liste von IPv6-Adressen ab, indem sie die GetAdaptersAddresses-API aufruft . Der Windows Vista-Stapel gibt eine Liste aller Schnittstellen zurück, die auf der in RFC 3484 angegebenen Sortierreihenfolge basiert. Daher werden IPv6- und 6to4-IPv6-Schnittstellen vor der Teredo-Schnittstelle aufgeführt. Wenn jedoch keine native IPv6- oder 6to4-Konnektivität verfügbar ist, ist Teredo die einzige aufgeführte IPv6-fähige Schnittstelle.

    Es ist wichtig zu beachten, dass eine Anwendung jede vom Windows Vista-Stapel bereitgestellte Schnittstelle verwenden kann. Die Reihenfolge der zurückgegebenen Schnittstellenliste führt jedoch am häufigsten dazu, dass Teredo zuletzt versucht wird.

  • Bevor Windows Vista versucht, eine Verbindung über die Teredo-Schnittstelle herzustellen, stellt das Betriebssystem sicher, dass die IPv6-Adresse stabilisiert wurde. Dies erfolgt automatisch für ausgehende Verbindungen und ist kein entscheidender Aspekt für eine Anwendung. Falls die Anwendung zur Gewährleistung der Adressstabilität erforderlich ist, kann die NotifyStableUnicastIpAddressTable-API aufgerufen werden, um sicherzustellen, dass die Teredo-Adresse stabil ist.

  • Eine Teredo-Schnittstelle versucht, eine Verbindung mit einer anderen Teredo-Schnittstelle am Ziel herzustellen. Wenn keine Teredo-Schnittstelle vorhanden ist, wird eine Verbindung mit einer nativen oder 6to4-Zieladresse über ein hostspezifisches Relay hergestellt.

Es ist auch möglich, dass Anwendungen, die Verbindungen mit dem Internet initiieren, unerwünschten Datenverkehr empfangen. Weitere Informationen finden Sie unter Empfangen von nicht angefordertem Datenverkehr über Teredo.

Verwenden der WSAConnectByName-API

Durch aufrufen der WSAConnectByName-API ist es für eine Anwendung möglich, eine Verbindung mit einem Zielnamen herzustellen, anstatt die genaue IP-Adresse anzugeben. Der Windows Vista-Stapel bevorzugt IPv6 gegenüber IPv4, und daher werden alle Verbindungsversuche zuerst an IPv6-Adressen durchgeführt.

Beim Aufrufen der WSAConnectByName-API werden alle abgerufenen Ziel-IP-Adressen in der folgenden Reihenfolge sortiert:

  • Native IPv6-Adresse
  • 6to4 IP-Adresse
  • IPv4-Adresse
  • Teredo-Adresse

Nachdem die Zieladressen intern sortiert wurden, wird eine Verbindung mit dem Ziel basierend auf der besten Route versucht, die auf dem lokalen Host für die Zieladresse verfügbar ist. Wie in der Reihenfolge der sortierten Adressen angegeben, wird die IPv4-Adresse zum Herstellen der Verbindung verwendet, wenn der Zielname in eine IPv4- und Teredo-Adresse aufgelöst wird.

Die WSAConnectByName-API arbeitet intern, um die beste Übereinstimmung zwischen Adressen zu finden. Dieser Versuch basiert auf den Routen, die auf dem lokalen Host und den Zieladressen verfügbar sind.

Aufgrund des aktuellen Fehlens von Teredo-Relays im Internet ist es unwahrscheinlich, dass Verbindungen mit nativen IPv6-Adressen über die Teredo-Schnittstelle erfolgreich sind. Wenn WSAConnectByName aufgerufen wird, stellt Windows Vista keine AAAA-Abfragen aus, wenn Teredo die einzige verfügbare IPv6-fähige Schnittstelle ist. Dadurch wird sichergestellt, dass native IPv6-Adressen nicht als Ziel abgerufen werden und dass Verbindungen über IPv4 versucht werden, was die größten Erfolgschancen hat. Um IPv6-Adressen abzurufen, wenn Teredo die einzige IPv6-fähige Schnittstelle ist, muss eine Anwendung explizit die DnsQuery-API für AAAA-Datensätze verwenden.