What's the difference in telling a service to run on localhost:xxxx
, 127.0.0.1:xxxx
and 0.0.0.0:xxxx
?
I needed to use 0.0.0.0
to get another host to be able to connect to my service.
What's the difference in telling a service to run on localhost:xxxx
, 127.0.0.1:xxxx
and 0.0.0.0:xxxx
?
I needed to use 0.0.0.0
to get another host to be able to connect to my service.
127.0.0.1:xxxx is the normal loopback address, and localhost:xxxx is the hostname for 127.0.0.1:xxxx.
0.0.0.0 is slightly different, it's an address used to refer to all IP addresses on the same machine. Or no specific IP address.
Here's a stack exchange post that explains the difference in more detail What's the difference between ip address 0.0.0.0 and 127.0.0.1?
localhost is a special virtual network interface, just like your ethernet or wifi each have a special interface.
The difference is that localhost, being a network interface, is very specific. When you say that you want to connect to 127.0.0.1, you are connecting specifically to localhost. Just like you specify IP of your wifi/ethernet to connect to those interfaces.
0.0.0.0 however, is not really an interface and it means to just try and connect to every available interface. This will try and connect to all the available interfaces instead of just 127.0.0.1.
Hence two are different.
EDIT: This here probably explains it a lot better an in greater detail: https://superuser.com/questions/949428/whats-the-difference-between-127-0-0-1-and-0-0-0-0