I see a % sign after my IPv6 address?!
Zone IDs After Link-local Addresses? What the hell is that?
If that is what you see with “ipconfig” on Windows machine with IPv6 enabled, this article is for you.
If you have one network card (NIC) inside your computer, everything is working fine and your computer can speak IPv6 to all others in the local network.
On the other side!
If you are one of those guys (strange networking guys who run strange labs on their big PCs), having more NICs inserted in their machine? In that case, your PC will have two or more network interfaces and every one of them will have the same network identifier fe80:0000:0000:0000. If you go back to networking fundamentals, you will remember that a host (or router) with more interfaces cannot have two of them with IP addressing from the same subnet.
If you want to ping the address fe80::5c9f:bc10:bb38:63ec from your computer and your computer has two NICs with addresses fe80::1111:1111:a000:0001 and fe80::5555:5555:5555:1111. Out of what interface will the ping exit the computer? Hm, on both? Only on random one? This is not going to work.
To resolve this issue there is Zone ID added to every NIC. This is the mysterious number after the % sign in the IPv6 Link-Local address. The number is basically an Interface ID.
In the network example here, Interfaces have Zone IDs 18, 19, 20, and 21, respectively.
This number distinguishes the network segments by using a numeric zone ID following a percent sign after the IP address:
Zone ID il localy significant and enables us to define out which interface we want to send some traffic.
If you want to ping a neighbour computer, you will need to specify the neighbour’s IPv6 Link-Local address plus the Zone ID of your computer’s network adapter that is going towards that computer.
It is now completely rewritten and hopefully without any big mistake.