IPv6 Link-local- und Site-local-Adressen
IPv6-Link-local- und standortlokale Adressen werden als bereichsbezogene Adressen bezeichnet. Die Windows Sockets -API (Winsock) unterstützt den sin6_scope_id Member in der sockaddr_in6 Struktur für die Verwendung mit bereichsbezogenen Adressen. Für IPv6 link-local addresses (fe80::/10 prefix) ist das sin6_scope_id Member in der sockaddr_in6 Struktur die Schnittstellennummer. Bei lokalen IPv6-Adressen (fec0::/10-Präfix) ist das sin6_scope_id Mitglied in der sockaddr_in6-Struktur ein Websitebezeichner.
Ein Beispiel für eine link-lokale IPv6-Adresse auf der 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 mit den Netsh.exe-Befehlen vorgenommen wurden, sind dauerhaft und gehen nicht verloren, wenn der Computer oder das IPv6-Protokoll neu gestartet wird.
Vor Windows XP mit Service Pack 1 (SP1) verwendet die IPv6-Konfiguration und -Verwaltung mehrere ältere Befehlszeilentools (Net.exe, Ipv6.exeund Ipsec6.exe), um IPv6 zu konfigurieren und zu verwalten. Bei Verwendung dieser ä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 Schnittstellenindex, des Schnittstellennamens und verschiedener anderer Schnittstelleneigenschaften.
netsh interface ipv6 show interface
Unter Windows XP mit SP1 ändert der folgende Befehl den Websitebezeichner, 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 Websitebezeichner, der einer standortlokalen Adresse zugeordnet ist, in 3.
ipv6 rtu fec0::/10 3
Wenn Sie eine Verbindung mit einer bereichsbezogenen Adresse herstellen, kann das sin6_scope_id Element in der sockaddr_in6-Struktur nicht angegeben (null) bleiben, das eine mehrdeutige Bereichsadresse darstellt. Die folgende linklokale Adresse ist beispielsweise mehrdeutig:
fe80::10
Wenn Sie eine Bindung an eine bereichsbezogene Adresse durchführen, muss das sin6_scope_id Mitglied in der sockaddr_in6-Struktur einen Wert ungleich Null enthalten, der eine gültige Schnittstellennummer für eine link-lokale Adresse oder einen Websitebezeichner für eine standortlokale Adresse angibt.
Mehrdeutige Adressbereiche
Wenn Sie eine Bereichsadresse senden oder eine Verbindung mit einer bereichsbezogenen Adresse herstellen und das sin6_scope_id Element in der sockaddr_in6-Struktur nicht angegeben haben, ist die bereichsbezogene Adresse mehrdeutig. Um dies zu beheben, bestimmt das IPv6-Protokoll zuerst, ob Sie den Socket an eine Quelladresse gebunden haben. Wenn ja, löst die gebundene Quelladresse die Mehrdeutigkeit durch Angeben einer Schnittstellennummer oder eines Standortbezeichners auf.
Wenn Sie eine Verbindung mit einer bereichsbezogenen Adresse senden oder eine Verbindung herstellen und weder das sin6_scope_id Mitglied noch eine Quelladresse angegeben haben, überprüft das IPv6-Protokoll die Routingtabelle. Der folgende Befehl zeigt beispielsweise die IPv6-Routingtabelle auf einem lokalen Computer an:
netsh interface ipv6 route
No Manual 256 fe80::/64 13 Local Area Connection
No Manual 256 fe80::/64 14 Wireless Network Connection
Dies gibt an, dass linkslokale Adressen standardmäßig als "On-Link" mit der Schnittstelle "#13" und "#14" behandelt werden.
Mehrdeutigkeit entsteht, wenn ein lokaler Computer über mehrere Netzwerkadapter verfügt. Der befehl netsh zeigt beispielsweise an, dass es zwei Netzwerkschnittstellen (Local Area Connection and Wireless Network Connection) gibt. Wenn eine Anwendung eine lokale Zieladresse (z. B. fe80::10) ohne Bereichs-ID angibt, ist nicht klar, welcher Adapter zum Senden des Pakets verwendet werden soll. Nur eine link-local unicast (fe80::/64) oder ein Linkbereichs-Multicast (ff00::/8) IPv6-Zieladresse kann davon betroffen sein, dass beim Senden eines Pakets keine Bereichs-ID vorhanden ist.
Nachbarn-Entdeckung
Wenn Sie das sin6_scope_id Mitglied in der sockaddr_in6-Struktur nicht angegeben haben, keine Quelladresse gebunden haben und keine Route für link-lokale Adressen angegeben haben, versucht das IPv6-Protokoll die Nachbarermittlung, die Ziellink-lokale Adresse aufzulösen. Für ein bestimmtes Paket, das gesendet wird, wird eine Schnittstelle ausprobiert. Diese erste Schnittstelle, die versucht wird, wird als die am häufigsten bevorzugte Schnittstelle betrachtet. Wenn Neighbor Discovery 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 über diese Schnittstelle nicht erreichbar ist. Auf dem nächsten Paket, das unter allen gleichen Bedingungen gesendet werden soll, wird eine andere Schnittstelle für Neighbor Discovery ausprobiert. Dieser Prozess wird für jedes neue Paket über jede schnittstelle auf einem lokalen Computer fortgesetzt, bis Neighbor Discovery auf die lokale Zieladresse mit link-local antwortet oder alle möglichen Schnittstellen ausprobiert und fehlgeschlagen sind. Jedes Mal, wenn ein Versuch, den Nachbarn aufzulösen, fehlschlägt, wird eine Schnittstelle für diesen Nachbarn eliminiert.
Wenn die lokale Zielverbindungsadresse 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 Neighbor Discovery die ziellinklokale Adresse auf allen Schnittstellen nicht auflösen kann, versucht das System dann, das Paket an die am häufigsten bevorzugte Schnittstelle (die erste Schnittstelle versucht) zu senden. Der Netzwerkstapel versucht weiterhin, die ziellink-lokale Adresse auf der am häufigsten bevorzugten Schnittstelle aufzulösen. Nach einem Bestimmten Zeitraum, nachdem Die Nachbarermittlung für alle Schnittstellen fehlgeschlagen ist, startet der Netzwerkstapel den Prozess erneut und versucht, die lokale Zieladresse für verknüpfungslokale Adressen auf allen Schnittstellen aufzulösen. Derzeit beträgt dieses Zeitintervall, wenn "Neighbor Discovery" erneut auf allen Schnittstellen versucht wird, 60 Sekunden. Dieses Zeitintervall kann sich jedoch unter Windows-Versionen ändern und sollte nicht von einer Anwendung angenommen werden.
Anmerkung
Wenn eine Anwendung die gleiche linklokale Adresse an eine andere Schnittstelle bindet, nachdem Neighbor Discovery die lokale Linkadresse aufgelöst hat, überschreibt die Schnittstelle nicht mit der link-lokalen Zieladresse, die von Neighbor Discovery zurückgegeben wird.
Weitere Informationen zu Neighbor Discovery für IP Version 6 finden Sie unter RFC4861 von der IETF veröffentlicht.
Verwandte Themen