我们在ping的时候,可以ping成功127.0.0.1,这是大家都知道的,如果不能,那就是有问题了。
有网的情况下,ping最后是通过网卡将数据发送出去的。
但是,在没有网的情况,依然可以ping通127.0.0.1。
首先,在没有网的情况下,网卡是不会工作的,那么ping是如何成功的呢?
为什么断网也可以ping通127.0.0.1。
我们首先来看一张ping回环地址的图片
从应用层到传输层再到网络层。当到达网络层时,系统将根据目的IP,从路由表中获得相应的路由信息,其中包括选择哪个网卡发送消息。
当发现目标IP是外网IP时,会从"真网卡"发出。
当发现目标IP是回环地址时,就会选择本地网卡。
本地网卡,实际上是一张“假网卡”,它不像"真网卡"那样有ring buffer什么的,"假网卡"把数据放到一个名为input_pkt_queue的链表中。这个链表,实际上是所有网卡共享的,挂着发送给本机的各种消息。在向该链表发送消息之后,将再触发一个软中断。
关于软中断,不得不提到一个专用工具人"ksoftirqd"(这是个内核线程),它是用来专门处理软中断的。当它收到软中断时,它会立刻去链表里将消息取出来,然后沿着数据链路层、网络层等层层往上传递最后到应用程序。
ping回环地址以及通过TCP等各种协议发送数据到回环地址都是走这条路径。整个路径是从发送到接收,没有经过“真网卡”。
之所以,我们这里把127.0.0.1叫本地回环地址,我们可以理解为,当消息发出到这个地址上时,就不会离开网络,在本机打个转就又回来了。所以,当你断网的时候,你仍然可以通127.0.0.1。
结尾
本文主要讨论了断网的情况下,还可以对127.0.0.1ping成功。之所以这样,是因为有本地网卡的存在。
对于此现象的理解,我们要理解本地网卡,以及ksoftirqd的工具,从而帮助我们对该现象加以理解。
>>>>>>点击进入云计算专题
上一篇:怎么开启IntelVT-x?
下一篇:云计算告诉你什么是云原生?
¥199.00
¥199.00
¥199.00
¥10500.00