以下内容转载自 https://blog.csdn.net/weixin_44493841/article/details/100204475
127.0.0.1和0.0.0.0和localhost的区别
127.0.0.1
- 172.0.0.1是本地还回地址,专供自己访问自己,速度快(不用经过整个协议栈),永远都不能出现在主机外部的网络中,所以只适合用在开发环境。
- 一般我们通过ping 127.0.0.1来测试本地网络是否正常。其实从127.0.0.1~127.255.255.255,这整个都是回环地址。
- 当我们在服务器搭建了一个web服务器的时候如果我们监听的端口时127.0.0.1:端口号 的 时候,那么这个web服务器只可以在服务器本地访问了,在别的地方进行访问是不行的。(127.0.0.1只可以在本地ping自己的,那么你监听这个就只可以在本地访问了)
localhost
- localhost是本地DNS解析的127.0.0.1的域名,在hosts文件里可以看到。
- localhost在了IPV4的是指127.0.0.1而IPV6是指::1。
0.0.0.0
- 如果我们直接ping 0.0.0.0是不行的,他在IPV4中表示的是无效的目标地址,但是在服务器端它表示本机上的所有IPV4地址。
- 如果一个服务有多个IP地址(如:192.168.1.2和10.1.1.12),那么我们如果设置的监听地址是0.0.0.0那么我们无论是通过IP: 192.168.1.2还是IP: 10.1.1.12都是可以访问该服务的。在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。
- 0.0.0.0 有几个不同的含义,不过当告诉服务器监听了 0.0.0.0,意味着监听每一个可用的网络接口,从服务器进程的角度来看,IP 地址为 127.0.0.1 的环回适配器看起来就像机器上的任何其他网络适配器一样,因此被告知监听 0.0.0.0 的服务器也将接受该接口上的连接。
- 因此在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到 0.0.0.0,这样我的服务访问就可以通过主机的多个 ip 地址访问我的服务。
- 比如我有一台服务器,一个外网地址 A,一个内网地址 B,如果我绑定的端口指定了 0.0.0.0,那么通过内网地址或外网地址都可以访问应用