I caratteri dopo% (che sono i numeri nel tuo esempio) sono l'identificatore di interfaccia. Questi caratteri vengono utilizzati per identificare una "interfaccia di rete", che le persone spesso chiamano una "scheda di rete". Ad esempio, può aiutare a determinare se un pacchetto utilizzerà una scheda Ethernet cablata o un adattatore Wi-Fi wireless.
Immagino che tu stia utilizzando Microsoft Windows. Usa i numeri come identificatori di interfaccia.
Come punto di confronto, i sistemi simili a Unix possono usare le lettere dopo il segno%. per esempio:fe80::71a3:2b00:ddd3:753f%eth0
In tal caso, l'identificatore di interfaccia eth0
corrisponde al nome della scheda di rete.
In Microsoft Windows, è possibile ottenere un elenco degli identificativi (numerici) dell'interfaccia utilizzando una delle righe di comando che controllano la tabella di routing. Preferisco " netstat -nr
" poiché funziona anche su altri sistemi operativi, ma Microsoft Windows supporta anche " route print
". L'output risultante, che viene segnalato, sarà probabilmente lungo uno schermo, quindi preparatevi a scorrere indietro, a meno che non vi dirigiate verso di più.
ad es. sul mio sistema:
===========================================================================
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 questo caso, un indirizzo come fe80 :: 71a3: 2b00: ddd3: 753f% 14 si riferirebbe al mio controller di famiglia Realek PCIe GBE. "GBE" si riferisce a Gigabit Ethernet.
Ora, ecco la parte difficile: se si desidera eseguire il ping di un indirizzo remoto, potrebbe essere necessario utilizzare l'indirizzo IPv6 del sistema remoto, ma l'identificatore di interfaccia del sistema locale. Quindi, per esempio, se sto usando il Computer A e ho un indirizzo IPv6 locale di fe80 :: 1 collegato all'interfaccia numero 14, e voglio fare un ping al Computer B e ha un indirizzo IPv6 locale di fe80 :: 2 collegato a la sua interfaccia numero 16, quindi questo è quello che vorrei usare:
ping fe80::2%14
Quindi il ping
comando invierà il pacchetto ICMPv6 all'indirizzo IPv6 remoto (fd80 :: 2), che appartiene al computer remoto, e utilizzerà l'interfaccia con l'identificatore 14 per farlo. Interface Identifier 14 è un numero del sistema che sto usando, non del sistema remoto.
Ora, vediamo perché questo potrebbe essere necessario.
Se voglio eseguire il ping dell'indirizzo IPv6 di Google (che è 2607: f8b0: 400a: 802 :: 200e al momento in cui ho scritto questa risposta), la tabella di routing controllerà quale scheda di rete gestisce gli indirizzi che iniziano con 2607: f8b0: 400a: 802. La tabella di routing indicherà che nessuna delle mie schede di rete è connessa direttamente a una rete utilizzando indirizzi che iniziano con 2607: f8b0: 400a: 802, quindi il mio computer finirà per utilizzare un indirizzo "gateway". Se mi connettessi a un'altra rete che fa parte dell'organizzazione per cui lavoro, potrei avere un indirizzo "gateway" speciale che instrada il traffico verso una rete privata. In questo caso, non ho un gateway più specifico, quindi userò il "gateway predefinito" IPv6. Ecco come funziona IPv6 per la maggior parte del tempo, ad eccezione degli indirizzi link-local. Questo è anche il modo in cui IPv4 ha funzionato la maggior parte delle volte.
Secondo RFC 4291 sezione 2.8 , ogni computer che utilizza IPv6 dovrebbe assegnare un indirizzo locale di collegamento a ogni interfaccia di rete. RFC 4291, sezione 2.5.6 mostra i bit con cui devono iniziare gli indirizzi link-local, che fanno sì che gli indirizzi link-local inizino con "fe80: 0000: 0000: 0000:" (anche se molti di questi zeri vengono compressi in due punti ). Il fatto che questi indirizzi inizino con "fe80:" è anche descritto da RFC 4291 sezione 2.4 .
Se si tenta di eseguire il ping di un sistema remoto (ad es. "2607: f8b0: 400a: 802"), il processo generale consiste generalmente nel capire una rete o sottorete di cui fa parte l'indirizzo, che viene eseguita osservando i bit all'inizio dell'indirizzo. Quindi, quei bit vengono utilizzati per determinare come instradare il traffico.
Tuttavia, tale processo non funziona per un indirizzo di collegamento locale IPv6, poiché ogni singola interfaccia di rete (operativa, attiva) ha un indirizzo di collegamento locale che inizia con "fe80:" su una sottorete che utilizza il prefisso / dimensione della sottorete / / 64" . Se utilizzi un laptop, è probabile che sia la tua scheda Ethernet che l'adattatore Wi-Fi dispongano di un indirizzo IPv6.
Ora, quando invii il tuo ping a fe80 :: 2, vuoi che il tuo computer invii quel pacchetto alla giusta scheda di rete. Se si dispone di una stampante connessa a una rete cablata, non si desidera inviare il traffico alla scheda Wi-Fi, utilizzando un percorso / percorso di rete che non comporterà il traffico che arriva alla stampante. E se stai cercando di comunicare con un dispositivo wireless utilizzando la tua scheda Wi-Fi, non vuoi che il tuo traffico esca dalla scheda Ethernet.
La soluzione consiste nel specificare quale dispositivo di rete si desidera venga utilizzato dal traffico. Quindi, questo è lo scopo dell'identificatore di rete.