为什么我的路由表存储一个 mac 地址?

Why my routing tables stores a mac address?

我是一名学习计算机网络的学生。

我的网络是这样的:

   Router(NAT)
  /         \
My PC     My iPad

我查看了我电脑的路由 table,它显示如下:

$ netstat -r
Routing tables

Internet:
Destination        Gateway            Flags           Netif Expire
default            172.22.128.1       UGScg             en0
127.0.0.1          127.0.0.1          UH                lo0
172.22.128.1       0:74:9c:96:72:55   UHLWIir           en0   1200
172.22.161.13      ba:2e:b1:6f:69:39  UHLWI             en0    740

我确认 172.22.161.13 的网关 ba:2e:b1:6f:69:39 是我 iPad 的 MAC 地址。

我有几点疑惑:

  1. 路由table不应该记录下一跳的ip地址吗?它如何存储 MAC 地址?
  2. 如果命令 netstat -r 也查找 arp table,它应该如何在不通过路由器的情况下将数据包发送到我的 iPad?

这里的问题是了解网络中第 2 层和第 3 层的功能。

向位于同一子网的设备转发数据包与向位于不同子网的设备转发数据包之间存在差异。

我认为没有比可以通过第 2 层协议相互通信的设备更好的子网定义了。路由器用于在不同子网中的设备之间转发数据包,即同一子网中的两个设备不通过路由器进行通信,至少不通过路由器的“路由器”部分进行通信。

位于同一子网中的设备应分配相同的 IP 前缀(即,网络掩码所覆盖的位相同)。 “应该”的意思是,如果不是这样,那么你的网络配置有误,可能无法正常工作。这样你的 PC 和你的 IPad 就可以确定它们在同一个子网上,不需要通过它们的默认网关。

由于您的 PC 和 IPad 在同一个子网上,它们将使用第 2 层相互通信。我不确定从您的配置中有多少接口实际上是无线的。如果两个接口都是无线的,它们实际上可能能够直接通话(我不确定 AP 模式下的 wifi 协议是否允许,我认为可以)。如果您的 PC 通过以太网连接,那么您的路由器也充当 switch/bridge(即第 2 层设备)并根据以太网规范转发数据包。你可以通过谷歌搜索了解它 MAC learning.

这应该回答了第二个问题,现在回答第一个问题。

实际上,我想知道为什么 table 存储 IP 地址。下一跳IP地址不用于转发。首先,请注意,从第 3 层(即路由器)的角度来看,两跳设备之间的通信使用第 2 层进行。当设备做出路由决策时,从 IP header 中获取目标地址并查找下一个hop,设备需要的是a)出接口b)如何使用接口的第2层协议到达下一跳。然后设备构造一个适当的层 2 header 并将数据包发送到下一跳设备,或多或少做同样的事情。因此,实际上您的 PC 需要 mac 路由器接口的地址,它所连接的接口才能将数据包发送到子网之外的某个地方。