网站客服:zx81024163 |

断网了,127.0.0.1还能 ping 通?

2023-08-25 12:03:05发布    浏览400次    信息编号:70702

友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。

断网了,127.0.0.1还能 ping 通?

要知道女神是否爱你,问她可能得不到答案,但你可以测试一下网络是否畅通,Ping一下就知道了。 您知道 Ping 命令背后的原因吗? 如果我将 127.0.0.1 更改为 0.0.0.0 或其他内容会发生什么? 这些IP地址有什么区别? 我曾经在面试中遇到过这个问题。 我和面试官之间的场景可以看下面的动画来找出小白当时心里的阴影区域。 事不宜迟,我们现在就开始吧。 先拔掉网线,让网络断开,然后在命令提示符窗口中输入 Ping 127.0.0.1 命令。

(此处已添加图书卡,请前往头条客户端查看)

控制台输入 ping 127.0.0.1。

$ ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.080 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.093 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.074 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.079 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.079 ms
^C
--- 127.0.0.1 ping statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.074/0.081/0.093/0.006 ms

说明网线拔掉,ping 127.0.0.1 可以ping通。

至此,本文的前半部分问题已经得到解答。 但我们可以进一步挖掘。

为什么断网后还能ping通127.0.0.1?

这是否证明你可以免费上网?

当然不是。

一要做好基础科普。

对于计算机网络来说,一般分为五层,即物理层、数据链路层、网络层、传输层和应用层。 这五层中,127.0.0.1属于网络层的地址,也就是说,只要你的电脑能够正常启动,无论是否联网,都可以通过网络层。 因此,即使网络断开,仍然可以通过网络层访问本地127.0.0.1。

但这并不意味着您可以免费上网。 因为即使可以访问本地127.0.0.1,仍然无法访问外网资源。 所以,如果你想访问互联网,你必须在线,并且需要连接到互联网上的其他计算机或服务器。

127.0.0.1是什么

首先,这是一个IPV4地址。

IPV4地址有32位,一个字节有8位,总共4个字节。

其中以127开头的属于回环地址,这也是一个特殊的IPV4地址,为了方便本地测试和开发而保留。 这些地址称为地址,不经过网络适配器就指向本地计算机。 因此,当我们使用ping 127.0.0.1时,实际上是在测试机器的网络连接是否正常。

将 127.0.0.1 定义为地址的主要原因是它是最容易记住的地址。 同时,它也是最常用的地址,因为它是默认地址,并且受到所有操作系统的支持。 在网络编程中,经常使用127.0.0.1作为本地服务器地址,以便客户端与本地服务器进行通信。

/* 进入本地主机。 */

# /* 127.0.0.1 */

IPv4地址共有32位,而IPv6地址共有128位,因此IPv6地址空间比IPv4地址空间大得多。 IPv4地址空间只有大约43亿个可用地址,而IPv6地址空间有超过340亿万亿个可用地址。

IPv4地址以8位分组,每组之间用点.分隔,IPv6地址以16位分组,每组之间用冒号:分隔。 如果多个连续的组都为0,则可以省略其中的一些,甚至可以省略全部。

IPV4下的环回地址为127.0.0.1,IPV6下则表示为::1。 中间省略了连续的0。 之所以不是7个冒号而是2个冒号:是因为IPv6地址中只允许出现两个连续的冒号。

还有一件事:在IPV4下使用ping 127.0.0.1命令。 ping6 ::1 命令在 IPV6 下使用。

什么是 ping

ping命令是一个基于应用层的网络工具,可以测试两台主机之间的连接情况。 具体来说,它向目标主机发送一个小数据包(通常是32字节),并等待目标主机返回响应数据包。 如果能够成功返回响应包,则说明目标主机可以正常连接,否则说明连接有问题。

在底层实现中,ping命令使用ICMP协议(ICMP协议),它是一个网络层协议,用于在IP网络中传输控制消息。 ping 命令向目标主机发送 ICMP Echo 消息。 目标主机收到该消息后,返回ICMP Echo Reply 消息作为响应。 这样就可以通过检查响应消息是否正常到达来判断目标主机的网络连接状态。

虽然ICMP协议和IP协议都属于网络层协议,但实际上ICMP也是使用IP协议来进行报文传输的。

所以,这里大家可以简单理解,ping某个IP就是向某个IP地址发送消息。

TCP发送数据和ping的区别

一般情况下,我们都会使用TCP进行网络数据传输,所以我们可以看出它和ping的区别。

Ping 和其他应用层软件一样属于同一 OSI 模型的应用层,但它使用的是 ICMP 协议,该协议工作在 OSI 模型的网络层,与聊天软件在传输层使用的 TCP 协议不同。

使用TCP协议发送消息时,需要先创建消息。 发送数据后,进入传输层,带上TCP头,网络层带上IP头,数据链路层带上MAC头等,经过一系列操作后,进入网卡的发送队列。 最后发出来。

然而,ping在创建时使用了(, , ),它代表一个原始套接字,工作在网络层,因此构造ICMP数据包是非常合适的。 ping发送数据包时,进入网络层添加ICMP和IP头,数据链路层添加MAC头,然后进入网卡的发送队列,最后发送出去。

因此,本质上,ping与普通应用程序发送消息的程序流程基本类似,只是它使用的协议不同,所以在网络层的处理也会有所不同。 这也解释了为什么当你怀疑网络有问题时,人们会问你是否能ping通,因为如果能ping通,就说明网络是通畅的,其他应用程序也可能正常工作。

为什么会断线?

平 127.0.0.1

前面说过,有网络的时候,ping最终是通过网卡发送数据的。

然后当网络断开时,网卡不工作,但ping环回地址时一切正常。 我们可以从这个例子中看到工作原理。

当应用程序向网络发送数据时,数据从应用层一层层向下传递,依次经过传输层和网络层。 对于ping命令来说,它使用ICMP协议,属于网络层协议。 当发送ping报文时,系统会根据目标IP地址在路由表中获取相应的路由信息​​,并选择发送报文的网卡。 如果目标IP是外网IP,则从真实网卡发送; 如果目标IP是环回地址,则选择本地网卡。

与真实网卡不同,本地网卡是一种没有环等硬件设备的虚拟网卡。 本地网卡将数据推送到链表中,链表是所有网卡共享的,发送到本机的各种消息都挂在上面。 消息发送到这个链表后,会再次触发软中断。

内核线程将处理软中断。 当它收到软中断时,会立即从链表中取出消息,然后向上经过数据链路层、网络层等,最后将消息传递给应用程序。 对于ping命令来说,最终会收到目标机发来的ICMP响应报文,并根据响应报文的内容判断目标机是否可达。

环回地址 ( ) 是一个特殊的 IP 地址,用于本机上的网络通信。 在IPv4协议中,环回地址为127.0.0.1。 使用ping环回地址时,数据会直接从应用层到传输层,再到网络层,绕过真正的物理网络接口,直接返回到本地主机,所以无需网络连接就可以ping通。网络连接。 除了ping环回地址之外,通过TCP等各种协议向环回地址发送数据也是遵循这个路径。 从发送到接收的整个路径并不经过真正的网络接口。 因此,127.0.0.1也被称为本地环回地址,因为数据不会走出网络,在本地机器上转了一圈后又回来了。

总结

127.0.0.1是环回地址,表示本机的IP地址,不是域名,而是默认相当于127.0.0.1。 当使用ping命令ping环回地址或本地地址时,数据包会经过lo0“假网卡”,然后经过网络层和数据链路层的逻辑处理,最后将数据插入到共享网卡中。链表中,触发软中断通知进行数据采集和处理的逻辑。 因此,ping环回地址和本地地址都不会离开本机,也不会走出真实的网络环境。 即使网络断线,也能正常Ping通环回地址。 如果服务器监听0.0.0.0,则表示监听所有网卡的请求。 此时可以使用127.0.0.1或本地地址访问该服务。

(此处已添加图书卡,请前往头条客户端查看)

提醒:请联系我时一定说明是从星空网上看到的!