面试官:断网了,还能 ping 通 127.0.0.1 吗? 下

简介: 面试官:断网了,还能 ping 通 127.0.0.1 吗? 下

ping回环地址和ping本机地址有什么区别

我们在mac里执行 ifconfig

$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    inet 127.0.0.1 netmask 0xff000000
    ...
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    inet 192.168.31.6 netmask 0xffffff00 broadcast 192.168.31.255
    ...

能看到 lo0 ,表示本地回环接口,对应的地址,就是我们前面提到的 127.0.0.1 ,也就是回环地址

eth0 ,表示本机第一块网卡,对应的IP地址是192.168.31.6 ,管它叫本机IP

之前一直认为ping本机IP的话会通过"真网卡"出去,然后遇到第一个路由器,再发回来到本机。

为了验证这个说法,可以进行抓包,但结果跟上面的说法并不相同。

ping 127.0.0.1

image.png

ping 本机地址

可以看到 ping 本机IP 跟 ping 回环地址一样,相关的网络数据,都是走的  lo0 ,本地回环接口,也就是前面提到的**"假网卡"** 。

只要走了本地回环接口,那数据都不会发送到网络中,在本机网络协议栈中兜一圈,就发回来了。因此 ping回环地址和ping本机地址没有区别

127.0.0.1 和 localhost 以及 0.0.0.0 有区别吗

回到文章开头动图里的提问,算是面试八股文里的老常客了。

以前第一次用 nginx 的时候,发现用这几个 IP,都能正常访问到 nginx 的欢迎网页。一度认为这几个 IP 都是一样的。

访问127.0.0.1:80访问localhost:80访问0.0.0.0:80

image.png

访问本机的IP地址

但本质上还是有些区别的。

首先 localhost 就不叫 IP,它是一个域名,就跟 "baidu.com",是一个形式的东西,只不过默认会把它解析为 127.0.0.1 ,当然这可以在 /etc/hosts 文件下进行修改。

所以默认情况下,使用 localhost 跟使用  127.0.0.1 确实是没区别的。

其次就是 0.0.0.0,执行 ping 0.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.1192.168.31.6 ,都是本机的IPV4地址,如果监听 0.0.0.0 ,那么用上面两个地址,都能访问到这个服务器。

当然, 客户端 connect 时,不能使用 0.0.0.0 。必须指明要连接哪个服务器IP。

总结

  • 127.0.0.1回环地址localhost域名 ,但默认等于 127.0.0.1
  • ping 回环地址和 ping 本机地址,是一样的,走的是lo0 "假网卡" ,都会经过网络层和数据链路层等逻辑,最后在快要出网卡前狠狠拐了个弯 , 将数据插入到一个链表 后就软中断 通知 ksoftirqd 来进行收数据 的逻辑,压根就不出网络 。所以断网了也能 ping 通回环地址。
  • 如果服务器 listen 的是 0.0.0.0,那么此时用127.0.0.1和本机地址都可以 访问到服务。



相关文章
|
虚拟化
VMware虚拟机和主机互相ping不通排查以及解决
VMware虚拟机和主机互相ping不通排查以及解决
VMware虚拟机和主机互相ping不通排查以及解决
|
安全 监控
服务器禁ping的好处和坏处是什么
服务器禁ping的好处和坏处是什么禁ping好处一定程度上在互联网上隐藏自己防止一些批量扫描软件探测主机,减少被入侵的几率; 禁止ping坏处 无法使用常用的ping或者监控软件来检测站点是否正常,服务器是否在线等; 建议一般情况下没必要禁止ping,只要常规的服务器安全设置下注意下使用互联网这么大没多大几率盯上这台服务器。
4958 0
|
8月前
|
安全 测试技术 数据库连接
利用MSF上线断网主机的思路分享
利用MSF上线断网主机的思路分享
127 0
|
9月前
|
网络协议 应用服务中间件 Linux
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
118 0
硬核图解!断网了,还能ping通 127.0.0.1 吗?为什么?
|
12月前
|
消息中间件 网络协议 JavaScript
面试官:断网了,还能 ping 通 127.0.0.1 吗? 上
面试官:断网了,还能 ping 通 127.0.0.1 吗? 上
|
12月前
|
网络协议 Linux 网络安全
如何解决IP能ping通但无法上网的问题?
如何解决IP能ping通但无法上网的问题?
1310 0
|
缓存 网络协议 网络架构
网络基础:Ping、Traceroute应用与排错
网络基础:Ping、Traceroute应用与排错
289 0
网络基础:Ping、Traceroute应用与排错
|
网络协议
虚拟机中能ping通IP但不能ping通域名
最近在电脑中安装了一个虚拟机,设置了ip地址,指定网络为桥接类型。 然后就发现能ping通一个ip地址,但不能ping通域名。
1183 0