Die Zeichen nach dem% (in Ihrem Beispiel Zahlen) sind die Schnittstellen-ID. Diese Zeichen werden verwendet, um eine "Netzwerkschnittstelle" zu identifizieren, die häufig als "Netzwerkkarte" bezeichnet wird. Beispielsweise kann es hilfreich sein, festzustellen, ob für ein Paket eine kabelgebundene Ethernet-Karte oder ein WLAN-Adapter verwendet wird.
Ich vermute, dass Sie Microsoft Windows verwenden. Es verwendet Zahlen als Schnittstellenkennungen.
Zum Vergleich: Unix-ähnliche Systeme können Buchstaben nach dem% -Zeichen verwenden. z.B:fe80::71a3:2b00:ddd3:753f%eth0
In diesem Fall eth0
stimmt die Schnittstellen-ID mit dem Namen der Netzwerkkarte überein.
In Microsoft Windows können Sie eine Liste der (numerischen) Schnittstellenkennungen abrufen, indem Sie eine der Befehlszeilen verwenden, die die Routingtabelle überprüfen. Ich bevorzuge " netstat -nr
", da dies auch auf anderen Betriebssystemen funktioniert, aber Microsoft Windows auch " route print
" unterstützt . Die resultierende Ausgabe, die gemeldet wird, ist wahrscheinlich über einen langen Bildschirm verteilt. Bereiten Sie sich also darauf vor, zurückzuscrollen, es sei denn, Sie leiten eine Pipe an mehr.
zB auf meinem System:
===========================================================================
Interface List
14...5c f9 dd 6d 98 b8 ......Realtek PCIe GBE Family Controller
12...e0 06 e6 7e fc 4e ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
13...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter
15...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter #2
===========================================================================
In diesem Fall bezieht sich eine Adresse wie fe80 :: 71a3: 2b00: ddd3: 753f% 14 auf meinen Realtek PCIe GBE Family Controller. Die "GBE" bezieht sich auf Gigabit-Ethernet.
Hier ist der knifflige Teil: Wenn Sie eine Remote-Adresse anpingen möchten, müssen Sie möglicherweise die IPv6-Adresse des Remote-Systems, aber die Schnittstellen-ID des lokalen Systems verwenden. Wenn ich zum Beispiel Computer A verwende und eine lokale IPv6-Adresse von fe80 :: 1 an Schnittstelle Nr. 14 anhänge und ich Computer B anpingen möchte und eine lokale IPv6-Adresse von fe80 :: 2 anhänge seine Schnittstelle Nummer 16, dann ist dies, was ich verwenden würde:
ping fe80::2%14
Der ping
Befehl sendet das ICMPv6-Paket an die ferne IPv6-Adresse (fd80 :: 2), die zum fernen Computer gehört, und verwendet dazu die Schnittstelle mit der Kennung 14. Die Schnittstellenkennung 14 ist eine Nummer des von mir verwendeten Systems, nicht des fernen Systems.
Schauen wir uns nun an, warum dies notwendig sein könnte.
Wenn ich die IPv6-Adresse von Google anpingen möchte (2607: f8b0: 400a: 802 :: 200e zu dem Zeitpunkt, als ich diese Antwort schrieb), prüft die Routing-Tabelle, welche Netzwerkkarten Adressen verarbeiten, die mit 2607: f8b0: 400a beginnen: 802. Die Routing-Tabelle zeigt an, dass keine meiner Netzwerkkarten mit Adressen, die mit 2607: f8b0: 400a: 802 beginnen, direkt mit einem Netzwerk verbunden ist, sodass mein Computer am Ende eine "Gateway" -Adresse verwendet. Wenn ich eine Verbindung zu einem anderen Netzwerk hergestellt habe, das Teil der Organisation ist, für die ich arbeite, verfügt ich möglicherweise über eine spezielle "Gateway" -Adresse, die den Datenverkehr an ein privates Netzwerk weiterleitet. In diesem Fall habe ich kein spezifischeres Gateway, daher verwende ich das IPv6-Standardgateway. So funktioniert IPv6 die meiste Zeit, mit Ausnahme von verbindungslokalen Adressen. So funktionierte auch IPv4 die meiste Zeit.
Gemäß RFC 4291 Abschnitt 2.8 sollte jeder Computer, der IPv6 verwendet, jeder Netzwerkschnittstelle eine verbindungslokale Adresse zuweisen. RFC 4291 Abschnitt 2.5.6 zeigt die Bits, mit denen verbindungslokale Adressen beginnen müssen, wodurch die verbindungslokalen Adressen mit "fe80: 0000: 0000: 0000:" beginnen (obwohl viele dieser Nullen zu einem Doppelpunkt zusammengefasst werden) ). Die Tatsache, dass diese Adressen mit "fe80:" beginnen, wird auch in RFC 4291, Abschnitt 2.4 beschrieben .
Wenn Sie versuchen, ein Remote-System zu pingen (z. B. "2607: f8b0: 400a: 802"), müssen Sie in der Regel anhand der Bits herausfinden, zu welchem Netzwerk oder Teilnetz die Adresse gehört am Anfang der Adresse. Diese Bits werden dann verwendet, um zu bestimmen, wie der Verkehr weitergeleitet werden soll.
Dieser Prozess funktioniert jedoch nicht für eine IPv6-Link-Local-Adresse, da jede einzelne (betriebsbereite, aktive) Netzwerkschnittstelle eine Link-Local-Adresse hat, die mit "fe80:" in einem Subnetz mit dem Subnetzpräfix / size of "/ beginnt. 64 ". Wenn Sie sich auf einem Laptop befinden, werden Sie wahrscheinlich feststellen, dass sowohl Ihre Ethernet-Karte als auch Ihr Wi-Fi-Adapter eine solche IPv6-Adresse haben.
Wenn Sie jetzt Ihren Ping an fe80 :: 2 senden, soll Ihr Computer dieses Paket über die richtige Netzwerkkarte senden. Wenn Sie einen Drucker haben, der an ein kabelgebundenes Netzwerk angeschlossen ist, möchten Sie den Datenverkehr nicht über einen Netzwerkpfad / eine Netzwerkroute von Ihrer Wi-Fi-Karte senden, der / die nicht dazu führt, dass der Datenverkehr zum Drucker gelangt. Wenn Sie versuchen, mit Ihrer WLAN-Karte mit einem drahtlosen Gerät zu kommunizieren, soll der Datenverkehr nicht über die Ethernet-Karte übertragen werden.
Als Lösung müssen Sie angeben, welches Netzwerkgerät der Datenverkehr verwenden soll. Das ist also der Zweck der Netzwerkkennung.