127.0.0.1 必须属于接口/适配器吗?

127.0.0.1 必须属于接口/适配器吗?

我的电脑上的路由表如下:

IPv4 Route Table
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2   4060
          0.0.0.0          0.0.0.0         On-link    202.212.131.53     32
          0.0.0.0          0.0.0.0         On-link        172.19.0.1      0
   202.212.131.53  255.255.255.255         On-link    202.212.131.53    291
        127.0.0.0        255.0.0.0         On-link         127.0.0.1   4556
        127.0.0.1  255.255.255.255         On-link         127.0.0.1   4556
  127.255.255.255  255.255.255.255         On-link         127.0.0.1   4556

请注意,行“127.0.0.1 255.255.255.255 On-link 127.0.0.1 4556”似乎表示有一个 IP 地址为 127.0.0.1 的接口。但使用“ipconfig /all”命令,我找不到任何具有 IP 地址 127.0.0.1 的网络适配器(物理或虚拟)。所以,我想知道这一行是什么意思。它将网络目标为 127.0.xx 的数据包发送到哪个接口?

答案1

127.0.0.1 必须属于接口/适配器吗?

这不是强制性的(IP 堆栈可以按照其喜欢的任何方式处理),但一般来说更简单将其分配给虚拟接口 – 这会导致 IP 代码中的特殊情况更少。因此在大多数通用操作系统上,它确实属于虚拟“环回”或lo接口。

请注意,“127.0.0.1 255.255.255.255 On-link 127.0.0.1 4556”这一行似乎表示有一个 IP 地址为 127.0.0.1 的接口。但使用“ipconfig /all”命令,我找不到任何具有 IP 地址 127.0.0.1 的网络适配器(物理或虚拟)

有一个;它只是在 ipconfig 中隐藏了。但最顶部的接口列表route print以“软件环回接口”的名称显示了它。

答案2

不,127.0.0.1 不需要属于接口/适配器。如何表示特殊路由(例如 127.0.0.0/8)取决于该平台上 IP 实现的开发人员。

我可以通过解释什么是空路由来说明这一点吗?

这是一条经过配置的路由,因此不会转发任何发往该路由的流量。

  • 在Cisco平台上,用户指定该Null接口作为出接口。
  • 在 Juniper 平台上,用户在路由策略上下文中指定discard或操作。reject
  • 在Linux上,用户用blackhole关键字指定路由。

这是配置同一功能的三种方式。

相关内容