Les caractères après le% (qui se trouvent être des nombres dans votre exemple) sont l'identifiant d'interface. Ces caractères sont utilisés pour identifier une "interface réseau", que les gens appellent souvent une "carte réseau". Par exemple, il peut être utile de déterminer si un paquet utilisera une carte Ethernet câblée ou un adaptateur Wi-Fi sans fil.
Je suppose que vous utilisez Microsoft Windows. Il utilise des nombres comme identificateurs d'interface.
En comparaison, les systèmes de type Unix peuvent utiliser des lettres après le signe%. par exemple:fe80::71a3:2b00:ddd3:753f%eth0
Dans ce cas, l'identifiant d'interface eth0
, correspond au nom de la carte réseau.
Dans Microsoft Windows, vous pouvez obtenir une liste des identificateurs d'interface (numériques) à l'aide de l'une des lignes de commande vérifiant la table de routage. Je préfère " netstat -nr
" car cela fonctionne également sur d'autres systèmes d'exploitation, mais Microsoft Windows prend également en charge " route print
". La sortie résultante, qui est rapportée, sera probablement sur un écran long, alors soyez prêt à revenir en arrière, sauf si vous passez à plus.
par exemple, sur mon système:
===========================================================================
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
===========================================================================
Dans ce cas, une adresse comme fe80 :: 71a3: 2b00: ddd3: 753f% 14 ferait référence à mon contrôleur de famille Realtek PCIe GBE. Le "GBE" se réfère à Gigabit Ethernet.
Maintenant, voici la partie la plus délicate: Si vous souhaitez envoyer une requête ping à une adresse distante, vous devrez peut-être utiliser l'adresse IPv6 du système distant, mais l'identificateur d'interface du système local. Ainsi, par exemple, si j'utilise l'ordinateur A et que l'adresse IPv6 locale fe80 :: 1 est associée à l'interface numéro 14 et que je souhaite envoyer une requête ping à l'ordinateur B, l'adresse IPv6 locale fe80 :: 2 est associée à l'adresse correspondante. son numéro d’interface 16, c’est ce que j’aimerais utiliser:
ping fe80::2%14
La ping
commande enverra donc le paquet ICMPv6 à l'adresse IPv6 distante (fd80 :: 2), qui appartient à l'ordinateur distant, et utilisera l'interface avec l'identificateur 14 pour le faire. L'identificateur d'interface 14 est un numéro du système que j'utilise, pas du système distant.
Voyons maintenant pourquoi cela pourrait être nécessaire.
Si je souhaite envoyer une requête ping à l'adresse IPv6 de Google (2607: f8b0: 400a: 802 :: 200e au moment où j'ai écrit cette réponse), la table de routage vérifie quelle carte réseau gère les adresses commençant par 2607: f8b0: 400a: 802. La table de routage indiquera qu'aucune de mes cartes réseau n'est connectée directement à un réseau utilisant des adresses commençant par 2607: f8b0: 400a: 802, mon ordinateur finira donc par utiliser une adresse de "passerelle". Si je me connectais à un autre réseau appartenant à l'organisation pour laquelle je travaille, j'aurais peut-être une adresse spéciale de "passerelle" qui achemine le trafic vers un réseau privé. Dans ce cas, je n'ai pas de passerelle plus spécifique, je vais donc utiliser la "passerelle par défaut" IPv6. C'est ainsi que fonctionne IPv6 la plupart du temps, à l'exception des adresses de liens locaux. C'est également comme cela que IPv4 fonctionnait la plupart du temps.
Conformément à la section 2.8 de la norme RFC 4291 , chaque ordinateur utilisant IPv6 doit attribuer une adresse de liaison locale à chaque interface réseau. La section 2.5.6 de la RFC 4291 indique les bits par lesquels les adresses de liens locaux doivent commencer, ce qui entraîne le début des adresses de liens locaux avec "fe80: 0000: 0000: 0000:" (bien que beaucoup de ces zéros soient réduits à un double-point) ). Le fait que ces adresses commencent par "fe80:" est également décrit par la RFC 4291, section 2.4 .
Si vous essayez d'envoyer une commande ping à un système distant (par exemple, "2607: f8b0: 400a: 802"), le processus général consiste généralement à identifier un réseau ou un sous-réseau dont l'adresse est une partie, en examinant les bits. au début de l'adresse. Ensuite, ces bits sont utilisés pour déterminer comment acheminer le trafic.
Cependant, ce processus ne fonctionne pas pour une adresse lien local IPv6 car chaque interface réseau (opérationnelle, active) possède une adresse lien local commençant par "fe80:" sur un sous-réseau utilisant le préfixe de sous-réseau / taille de "/ 64 ". Si vous utilisez un ordinateur portable, vous constaterez probablement que votre carte Ethernet et votre adaptateur Wi-Fi doivent avoir une telle adresse IPv6.
Maintenant, lorsque vous envoyez votre ping à fe80 :: 2, vous voulez que votre ordinateur envoie ce paquet sur la bonne carte réseau. Si vous avez une imprimante connectée à un réseau câblé, vous ne souhaitez pas envoyer le trafic de votre carte Wi-Fi, en utilisant un chemin / itinéraire réseau qui n'entraînera pas le trafic acheminé vers l'imprimante. Et si vous essayez de communiquer avec un périphérique sans fil à l'aide de votre carte Wi-Fi, vous ne voulez pas que votre trafic sorte de la carte Ethernet.
La solution consiste à spécifier le périphérique réseau que le trafic doit utiliser. Donc, c’est l’objet de l’identificateur de réseau.