jichaodeiMac:~ jichaoyang$ netstat -r
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default openwrt.lan UGSc 10 0 en0
127 localhost UCS 1 0 lo0
localhost localhost UH 2 54 lo0
169.254 link#4 UCS 1 0 en0
192.168.1 link#4 UCS 2 0 en0
192.168.1.1/32 link#4 UCS 2 0 en0
openwrt.lan 46:94:fc:63:fc:7 UHLWIir 11 3610 en0 1200
192.168.1.125/32 link#4 UCS 2 0 en0
jichaodeimac.lan d0:50:99:14:b7:a3 UHLWIi 1 1 lo0
yangjicdeiphone.la link#4 UHLWIi 1 0 en0
224.0.0 link#4 UmCS 1 0 en0
255.255.255.255/32 link#4 UCS 1 0 en0
link#4
表中的含义是什么?
答案1
表达式link#x
,其中x
是某个数字,用于表示相应的地址是link-level address
,。IE,仅在主机所在网络上运行的地址身体上連接到。
因此这些地址不是用于访问本地网络之外的主机,或者用技术术语来说,它们是不可路由:一旦带有这些地址的数据包到达网关(两个或多个不同网络之间的连接点),网关就会丢弃它们。因此,这些地址不需要任何网关,因为它们甚至不应该逃到不同的网络中。
链路级地址属于所谓的链路层,它混合了 OSI 第 1 层(物理)和 OSI 第 2 层(数据链路层)概念。链路层级别有几种有用的协议,例如ARP、OSPF、PPP、MAC(包括以太网)。
基本上,在链路层,您不需要路由,因为发往其他主机的数据包会通过网络发送,任何人都可以监听;全部物理连接上的主机接收数据包,不是该数据包的目的地的主机将丢弃该数据包,而只有真正的收件人才会保留该数据包并读取它。
真实的路由利用第 2 层封装将发往远程主机的数据包转换为发往路由器的二层数据包,路由器将数据包从二层封装中解开,检查数据包是否发往其他网络,将其移至向外的接口,然后再次将其作为二层数据包发送到外部本地网络,发往下一跳路由器。 依此类推。
答案2
关于你的第二个问题有没有办法知道 link#4 指定哪个接口?,可以将该netstat
命令与-i
交换机(接口状态)一起使用。[注意:我netstat
不喜欢解析 IP 地址,因此除了感兴趣的交换机之外,我通常还包括-n
]。因此,示例(部分)输出将是:
][ netstat -ni
Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll
lo0 16384 <Link#1> 2030140 0 2030140 0 0
lo0 16384 127 127.0.0.1 2030140 - 2030140 - -
lo0 16384 ::1/128 ::1 2030140 - 2030140 - -
在此示例中,Link#1
与环回接口相关联lo0
,该接口在127
地址为 的网络(AF_NET 系列 - IP4)127.0.0.1
和::1/128
地址为 的网络(AF_NET6 系列 - IP6)上运行::1
。
答案3
link#4 表示 IP 范围位于本地网段,不需要路由。如果条目不是 IP 范围,netstat -r 将显示该单个 IP 地址的 MAC 地址。在所有其他情况下,它将显示可能将数据包发送到的路由器的 IP(或主机名)。