Verbindungslokale und standortlokale IPv6-Adressen
IPv6-link-local und standortlokale Adressen werden als Bereichsadressen bezeichnet. Die Windows Sockets-API (Winsock) unterstützt das sin6_scope_id-Member in der sockaddr_in6-Struktur für die Verwendung mit bereichsbezogenen Adressen. Für IPv6-link-lokale Adressen (fe80::/10-Präfix) ist das sin6_scope_id Member in der sockaddr_in6-Struktur die Schnittstellennummer. Für standortlokale IPv6-Adressen (fec0::/10-Präfix) ist der sin6_scope_id Member in der sockaddr_in6-Struktur ein Standortbezeichner.
Ein Beispiel für eine link-lokale IPv6-Adresse auf schnittstelle #5 ist folgendes:
fe80::208:74ff:feda:625c%5
Der folgende Befehl ist unter Windows XP mit Service Pack 1 (SP1) und höher verfügbar, um IPv6 auf einem lokalen Computer abzufragen und zu konfigurieren:
Konfigurationsänderungen, die mithilfe der Netsh.exe-Befehle vorgenommen werden, sind dauerhaft und gehen nicht verloren, wenn der Computer oder das IPv6-Protokoll neu gestartet wird.
Vor Windows XP mit Service Pack 1 (SP1) wurden bei der IPv6-Konfiguration und -Verwaltung mehrere ältere Befehlszeilentools (Net.exe, Ipv6.exe und Ipsec6.exe) zum Konfigurieren und Verwalten von IPv6 verwendet. Mit diesen älteren Tools sind die IPv6-Änderungen nicht dauerhaft und gehen verloren, wenn der Computer oder das IPv6-Protokoll neu gestartet wurde. Diese älteren Befehlszeilentools werden nur unter Windows XP unterstützt.
Unter Windows XP mit SP1 zeigt der folgende Befehl die Liste der IPv6-Schnittstellen auf einem lokalen Computer an, einschließlich des Schnittstellenindexes, des Schnittstellennamens und verschiedener anderer Schnittstelleneigenschaften.
netsh interface ipv6 show interface
Unter Windows XP mit SP1 ändert der folgende Befehl den Standortbezeichner, der einem Schnittstellenindex zugeordnet ist.
netsh interface ipv6 set interface <InterfaceIndex or Name> siteid=value
Unter Windows XP ändert der folgende ältere Befehl auch den Standortbezeichner, der einer standortlokalen Adresse zugeordnet ist, in 3.
ipv6 rtu fec0::/10 3
Wenn Sie eine bereichsbezogene Adresse senden oder eine Verbindung mit dieser herstellen, kann der sin6_scope_id Member in der sockaddr_in6-Struktur nicht angegeben (null) bleiben, was eine mehrdeutige Bereichsadresse darstellt. Die folgende linklokale Adresse ist z. B. mehrdeutig:
fe80::10
Wenn Sie eine Bindung an eine bereichsbezogene Adresse durchführen, muss der sin6_scope_id Member in der sockaddr_in6-Struktur einen Nichtzero-Wert enthalten, der eine gültige Schnittstellennummer für eine link-lokale Adresse oder einen Standortbezeichner für eine standortlokale Adresse angibt.
Mehrdeutige Bereichsadressen
Wenn Sie eine bereichsbezogene Adresse senden oder eine Verbindung mit dieser herstellen und den sin6_scope_id-Member nicht in der sockaddr_in6-Struktur angegeben haben, ist die bereichsbezogene Adresse mehrdeutig. Um dies zu beheben, bestimmt das IPv6-Protokoll zunächst, ob Sie den Socket an eine Quelladresse gebunden haben. Wenn ja, löst die gebundene Quelladresse die Mehrdeutigkeit durch Angabe einer Schnittstellennummer oder eines Standortbezeichners auf.
Wenn Sie eine Adress senden oder eine Verbindung mit einer bereichsbezogenen Adresse herstellen und weder den sin6_scope_id-Member angegeben noch eine Quelladresse gebunden haben, überprüft das IPv6-Protokoll die Routingtabelle. Der folgende Befehl zeigt beispielsweise die IPv6-Routingtabelle auf einem lokalen Computer an:
„netsh interface ipv6 show route“
No Manual 256 fe80::/64 13 Local Area Connection
No Manual 256 fe80::/64 14 Wireless Network Connection
Dies gibt an, dass linklokale Adressen standardmäßig als On-Link zur Schnittstelle #13 und #14 behandelt werden.
Mehrdeutigkeit entsteht, wenn ein lokaler Computer über mehrere Netzwerkadapter verfügt. Der obige befehl netsh weist beispielsweise darauf hin, dass es zwei Netzwerkschnittstellen gibt (Local Area Connection und Wireless Network Connection). Wenn eine Anwendung eine ziellink-lokale Adresse (z. B. fe80:::10) ohne Bereichs-ID angibt, ist nicht klar, welcher Adapter zum Senden des Pakets verwendet werden soll. Nur eine link-lokale Unicast-Adresse (fe80::/64) oder eine Link-Scope-Multicastadresse (ff00::/8) kann beim Senden eines Pakets davon betroffen sein, dass keine Bereichs-ID vorhanden ist.
Nachbarsuche
Wenn Sie das sin6_scope_id-Member in der sockaddr_in6-Struktur nicht angegeben, keine Quelladresse gebunden und keine Route für linklokale Adressen angegeben haben, versucht das IPv6-Protokoll die Nachbarermittlung, um die link-lokale Zieladresse aufzulösen. Für ein bestimmtes Paket, das gesendet wird, wird eine Schnittstelle versucht. Diese erste Schnittstelle, die versucht wird, gilt als die am meisten bevorzugte Schnittstelle. Wenn die Nachbarermittlung die linklokale Adresse auf einer Schnittstelle nicht auflösen kann, wird das zu sendende Paket gelöscht, und das System merkt sich, dass die lokale Zieladresse nicht über diese Schnittstelle erreichbar ist. Beim nächsten Paket, das unter den gleichen Bedingungen gesendet werden soll, wird eine andere Schnittstelle für Die Nachbarermittlung versucht. Dieser Prozess wird über jede der Schnittstellen auf einem lokalen Computer für jedes neue Paket fortgesetzt, bis die Nachbarermittlung für die lokale Zielverbindungsadresse antwortet oder alle möglichen Schnittstellen versucht wurden und fehlgeschlagen sind. Jedes Mal, wenn ein Versuch, den Nachbarn aufzulösen, fehlschlägt, wird eine Schnittstelle für diesen Nachbarn gelöscht.
Wenn die lokale Adresse des Ziellinks aufgelöst wird, wird diese Schnittstelle zum Senden des aktuellen Pakets verwendet. Diese Schnittstelle wird auch für alle nachfolgenden mehrdeutigen Pakete verwendet, die an dieselbe link-lokale Zieladresse gesendet werden.
Wenn die Nachbarermittlung die lokale Zielverbindungsadresse auf allen Schnittstellen nicht auflösen kann, versucht das System, das Paket auf der am meisten bevorzugten Schnittstelle zu senden (die erste Schnittstelle wurde versucht). Der Netzwerkstapel versucht immer wieder, die lokale Adresse des Ziellinks auf der am häufigsten bevorzugten Schnittstelle aufzulösen. Nach einer bestimmten Zeit, nachdem bei der Nachbarnermittlung für alle Schnittstellen ein Fehler aufgetreten ist, startet der Netzwerkstapel den Prozess erneut und versucht, die lokale Adresse des Ziellinks auf allen Schnittstellen aufzulösen. Derzeit beträgt dieses Zeitintervall, in dem die Nachbarermittlung auf allen Schnittstellen erneut versucht wird, 60 Sekunden. Dieses Zeitintervall kann sich jedoch bei Versionen von Windows ändern und sollte von einer Anwendung nicht angenommen werden.
Hinweis
Wenn eine Anwendung dieselbe linklokale Adresse an eine andere Schnittstelle bindet, nachdem die Nachbarermittlung die linklokale Adresse aufgelöst hat, wird die Schnittstelle nicht mit der linklokalen Zieladresse überschrieben, die von der Nachbarermittlung zurückgegeben wird.
Weitere Informationen zur Nachbarermittlung für IP-Version 6 finden Sie unter RFC4861 veröffentlicht von der IETF.
Zugehörige Themen