127.0.0.1和0.0.0.0等特殊IP的区别

127.0.0.1和0.0.0.0等特殊IP的区别

最近开发中遇到了一些特殊IP的使用,所以写点东西,以供参考。

本机IP

本机IP是指电脑在网段中分配到的IP地址,局域网内的其他电脑能够通过这个IP,访问本机。如果本机处于多个网段之中,那么拥有多个IP地址,也是很常见的。

用拟人的说法来说,比如你同时具备了健身卡号和借书证号,健身房根据健身卡号确定你是谁,图书馆根据借书证号码确定你是谁。

127.0.0.1

回环地址loopback,是一个IP集合:127.0.0.1~127.255.255.254,其中最出名的就是127.0.0.1

Linux下使用命令ifconfig,Windows使用ipconfig,可以看到如下图:

lo

他是虚拟的设备接口,不需要网卡就能拥有这个网段,那么他自然不能被外部网络访问。这个特性使127.0.0.1经常:

  • 被使用在本机通信中,比如本机服务端/客户端联调,或者反向代理。
  • 被指定为域名localhost的ip地址,因为他就是指向本机,而且不会变(不像本机IP)。

::1

127.0.0.1相同,只不过他是ipv6形式的,0:0:0:0:0:0:0:1的缩写。

0.0.0.0

代表全部IP地址,包括本机IP和回环IP。

比如说你有两个IP地址:192.168.1.3172.17.1.3,你想部署一个服务,供两个网段的客户端访问。那么你可以部署到0.0.0.0。则访问这两个IP的用户都能访问到这个服务。

案例

假设我有一个服务器,有两个IP地址:192.168.1.3172.17.1.3,我的web服务器设置host如表头,那么当我在特定机器访问特定IP时(如每行头列),返回如下表:

- host=127.0.0.1 host=192.168.1.3 host=172.17.1.3 host=0.0.0.0
本机访问127 Y N N Y
本机访问192 N Y N Y
本机访问172 N N Y Y
外机访问127 - - - -
外机访问192 N Y N Y
外机访问172 N N Y Y

可见,不管你部署到哪个IP,都只能用本IP访问,除了0.0.0.0,简直万能!

证明一下

启动一个nginx容器:docker run -it --name nnn --rm -v /_04dockervolume/nginx:/etc/nginx/conf.d/ nginx
设置三个服务,分别绑定172.17.0.2:770.0.0.0:78127.0.0.1:79

77

78

79

外部访问

本机访问容器IP:

curl  172.17.0.2:77|grep total
curl  172.17.0.2:78|grep total
curl  172.17.0.2:79|grep total

curl

内部访问

进入容器,访问自己:

# 172
curl  172.17.0.2:77|grep total
curl  172.17.0.2:78|grep total
curl  172.17.0.2:79|grep total
# 127
curl  127.0.0.1:77|grep total
curl  127.0.0.1:78|grep total
curl  127.0.0.1:79|grep total

在这里插入图片描述

意不意外,惊不惊喜。

完毕。

猜你喜欢

转载自blog.csdn.net/weixin_36572983/article/details/108109725
今日推荐