我们在进行环境搭建时,可能会遇到3个熟悉的老朋友,那就是127.0.0.1、localhost、0.0.0.0,有时候,我们不管访问哪一个,它们都可以帮助我们进入相同页面。
但是,其实它们是不同的,这需要我们加以区分和了解他们。
接下来,我们就来谈谈这三个。
127.0.0.1和localhost和0.0.0.0
我们第一次使用nginx的时候,发现用这几个IP,都可以正常访问nginx网页。曾经以为几个IP是一样的,只是叫法不同。
但是,它们之间本质上还是有一些不同。
在了解之前,我们需要清楚的是,localhost并非IP,而是一个域名,而仅仅是一种形式而已。(比如www.baidu.com)
因此,使用localhost默认情况下与使用127.0.0.1没有什么区别。
第二个是0.0.0.0,如果你想要执行ping0.0.0.0,会显示失败的结果,这是因为IPV4中表示的是无效的目标地址。
$ ping 0.0.0.0
PING 0.0.0.0 (0.0.0.0): 56 data bytes
ping: sendto: No route to host
ping: sendto: No route to host
但它还是很有用处的,回想下,我们启动服务器的时候,一般会listen一个IP和端口,等待客户端的连接。
如果此时listen的是本机的0.0.0.0,那么它表示本机上的所有IPV4地址。
/* Address to accept any incoming messages. */
#define INADDR_ANY ((unsigned long int) 0x00000000) /* 0.0.0.0 */
来举个例子,我们拿127.0.0.1和192.168.31.6为例,它都是本机的IPV4地址,如果监听0.0.0.0,则可以使用以上两个地址访问该服务器。
当然,在客户端connect时不能使用0.0.0.0。你必须指定要连接的服务器IP。
总结
1.我们这里可以总结一下,对于127.0.0.1和localhost来说,一个是回环地址,另一个是域名,所以,一般情况下,我们可以把这两者等同起来,它们并没有什么区别。
2.ping 回环地址和 ping 本机地址,是一样的,走的是lo0 "假网卡",都会经过网络层和数据链路层等逻辑,最后在快要出网卡前狠狠拐了个弯,将数据插入到一个链表后就软中断通知 ksoftirqd 来进行收数据的逻辑,压根就不出网络。所以断网了也能 ping 通回环地址。
3.如果服务器listen的是0.0.0.0,那么你使用127.0.0.1和本机地址都可以访问到服务。
最后
我们通过理解这三者的概念,可以帮助我们在具体实践中进一步的区分,并在某些场景下,我们需要搞清楚它们的概念,从而为我们具体实践做进一步的铺垫。
>>>>>>点击进入云计算专题
¥199.00
¥199.00
¥10500.00
¥199.00