you wrote "is 127.0.0.1 always a different ip address to the machine's ip address". The numbers between the dots are different, that is a different IP address. What an odd question you ask. If by machine's ip address, you mean something other than 127.0.0.1 then yes, it would be a different IP address. And if what you call your machine's IP address is 192.168.0.1 (or some other standard local range), then you don't have to be afraid to say so. You can write it instead of x.x.x.x That 192 address won't exist on the internet anyway.
–
barlopOct 7 '10 at 10:23

The references for both work because of how the web server is configured. You can tell the server to bind to all addresses, or to only listen on specific ones. Since the Loopback and the actual IP are distinct addresses, the configuration is determining which IP to listen on. Since localhost is just a hosts entry for 127.0.0.1, it will only work when the web server is bound to 127.0.0.1.
–
peelmanOct 7 '10 at 14:17

3 Answers
3

127.0.0.1 is not just a different ip address to the machine ip address, it's a different
interface as well. 127.0.0.1 should not be seen on the local network. It's a special
internal IP address for the loopback adapter.

x.x.x.x will be your ethernet card.

by the way 'localhost' is simply an entry in your hosts file that points to 127.0.0.1

If you bind a socket to 127.0.0.1:8200 then only clients running locally will be able to access it and only with http://127.0.0.1:8200 or http://localhost:8200 (or a dns or hosts file entry that points to 127.0.0.1).

A socket bound to x.x.x.x:8200 will only be available through http://x.x.x.x:8200 or a dns or hosts file entry that points to that.

Binding a socket to 127.0.0.1 does not automatically make it available on the ethernet interface as well.

Thats why you can't connect to x.x.x.x:8200

You can bind port 8200 to all available interfaces (0.0.0.0) then it should work.

So what does the 'loopback' bit do? What does it loopback to? I thought it was a way to reference the machine ip address, whatever that happened to be' i.e. 127.0.0.1 => x.x.x.x
–
DavidOct 7 '10 at 14:03

The loopback interface is a virtual interface. It's often used to allow programs to talk to each other on the same machine. It is not a way to reference the machine IP address. 127.0.0.1 IS the IP address of the loopback virtual adaptor.
–
Matt HOct 8 '10 at 0:30

The other thing about the loopback adapter is that because it's virtual it doesn't actually pass any packets through to the network card.
–
Matt HOct 12 '10 at 23:18

Every IP address on the system is independent and can be bound to by sockets separately, with the exception of the special address 0.0.0.0 which indicates to the OS to bind the socket to all interfaces.

But 127.0.0.1 is also a special address, as the most common choice for the loopback interface. What does that address loop back to?
–
DavidOct 7 '10 at 14:14

That doesn't make it "special", that just makes it "an address on the loopback interface" (unless you say "every address is special in its own way", but let's not go there). It's the interface that does the looping, not the address.
–
Ignacio Vazquez-AbramsOct 7 '10 at 14:38

Slightly inaccurate. It may do so. Equally well it may not bring up any website and it is even possible to display an different internal website from what you get when you use your x.x.x.x address.

127.0.0.1 points to your own machine, but that doesn't mean it will behave the same way once it reaches your machine

If you want a non-technical analogy, your can consider them different doors into your house.

There are both pointing to the same house but they are not the same thing.
It is possible for each door to take you into the same room or they could take you into a different room. It is also possible to lock one door and not the other.

When you configure a website, you specify which addresses to bind to and quite often the answer is all addresses. (That is equivalent to have all doors taking you into the one room)

You can also specify the website to bind to one address only. (That is equivalent to locking all doors except one.)

If you have two (or more) websites you can bind them to separate addresses. (That is equivalent to having each door going into separate rooms).

An example of how both references work, my Windows 7 computer has IIS installed, when I go into IIS Manager and right click on Default Web Site, it gives me a 'Edit Bindings' menu option. Selecting that bring up a list of bindings. I have only one, but for IP Address it has * which means IIS listens on all my ip addresses.