127.x.x.x
127.x.x.x是回环ip地址,任何ip报目标地址是它的话,那么数据报到ip层以后就不往数据链路层发了。
本机IP
比如192.168.1.x,或者是公网ip,这些是在网络中代表本机的ip地址。
0.0.0.0
这个特殊的ip地址代表的是本机所有ip地址,不管你有多少个网口,多少个ip,如果监听本机的0.0.0.0上的端口,就等于监听机器上的所有ip端口。换句话说,就是只要数据报目的地址是你机器上的一个ip地址,那么就能被接受。
区别
大家写程序的时候,一般直接绑定端口,而没有管ip地址,这时默认都是设定的0.0.0.0。如果你显式设定为127.0.0.1的话,那么你用本机ip192.168.1.x是不能连接的。因为监听的ip地址是127.0.0.1,而不是192.168.1.x。这个区别很重要。下面我们用netcat来模拟一下:
ok啦!结果一目了然