When I use the Ping command against my localhost (on Windows Vista), it doesn't show up as 127.0.0.1.
C:\Windows\system32>ping localhost
Pinging GIGA [::1] from ::1 with 32 bytes of data:
Instead, it shows up as ::1
(pair of colons and a one). What kind of notation is this? And why is it not showing up as 127.0.0.1?
Here's what I see in the c:\windows\system32\drivers\etc\hosts
file.
::1 localhost 127.0.0.1 localhost
As suggested by Gregg I have already tried changing this order.
127.0.0.1 localhost ::1 localhost
The expected result is that 127.0.0.1
would take precedence over ::1
but that was not the case.
As I have learned now, this can be done by adding a prefix policy instead. To force cmd to use IP version 4 the option -4
can be used. To force Windows to always use IP version 4, IP version 6 or some of its components can be disabled through the properties dialog for the network adapter or through a registry tweak.
Best Answer
This is because ping on Windows Vista and newer Windows uses IPv6 by default when available.
::1
is a shortened notation of IPv6 loopback address - equivalent of IPv4 loopback127.0.0.1
.The full notation of the abbreviated
::1
IPv6 address is0000:0000:0000:0000:0000:0000:0000:0001
.If you want to force
ping
to use IPv4 instead you can specify the IPv4 address explicitly or use the-4
option.If you want to change the IPv6/IPv4 preference overall you can check IPv4 vs IPv6 priority in Windows 7.
For additional information you can also see the article localhost.