【127.0.0.1】和【localhost】和【本机IP】和【0.0.0.0】的区别
127.0.0.1
- 环回地址是主机用于向自身发送通信的一个特殊地址(也就是一个特殊的目的地址)。
- 127.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自己的,那么你监听这个就只可以在本地访问了)
- 127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。
- 本地环回地址主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用环回地址发送数据,协议软件立即返回,不进行任何网络传输, 127.0.0.1可以认为是计算机上的一个虚拟网卡的ip地址。
localhost
- localhost也叫local ,正确的解释是:本地服务器
- windows自动将localhost解析为127.0.0.1
- localhot(local)是不经网卡传输!这点很重要,它不受网络防火墙和网卡相关的的限制。有时候用localhost可以,但用127.0.0.1就不可以的情况就是在于此。
- localhost是本地DNS解析的127.0.0.1的域名,在hosts文件里可以看到。
本机IP
- 本机IP,我们可以理解为本机有三块网卡,一块网卡叫做loopback(虚拟网卡),一块叫做ethernet(有线网卡),一块叫做wlan(你的无线网卡)
- 联网,网卡传输,受防火墙和网卡限制
- 用于本机和外部访问
- 本机IP,确切地说,“本机地址”并不是一个规范的名词。通常情况下,指的是“本机物理网卡所绑定的网络协议地址”。由于目前常用网络协议只剩下了IPV4,IPX/Apple Tak消失了,IPV6还没普及,所以通常仅指IP地址甚至ipv4地址。

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,那么通过内网地址或外网地址都可以访问应用