[英]Why my routing tables stores a mac address?
我是一名学习计算机网络的学生。
这是我的网络的样子:
Router(NAT)
/ \
My PC My iPad
我查看了我的计算机的路由表,它显示以下内容:
$ 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
我确认 ip 172.22.161.13
的网关ba:2e:b1:6f:69:39
是我的 iPad 的 MAC 地址。
我有几个疑问:
netstat -r
也查找 arp 表,它应该如何在不通过路由器的情况下向我的 iPad 发送数据包?这里的问题是理解网络中第 2 层和第 3 层的功能。
将数据包转发到位于同一子网的设备和位于不同子网的设备之间是有区别的。
我认为没有比可以通过第 2 层协议相互通信的设备更好的子网定义了。 路由器用于在不同子网的设备之间转发数据包,也就是说,同一子网中的两个设备不通过路由器进行通信,至少不通过路由器的“路由器”部分。
位于同一子网中的设备应分配相同的 IP 前缀(即网络掩码覆盖的位相同)。 “应该”表示如果不是这样,那么你的网络配置错误,可能无法正常工作。 这样,您的 PC 和 IPad 可以确定它们在同一子网中,并且不需要通过默认网关进行 go。
由于您的 PC 和您的 IPad 位于同一子网中,因此它们将使用第 2 层相互通信。从您的配置中,我不确定实际上有多少接口是无线的。 如果两个接口都是无线的,它们实际上可能能够直接通话(我不确定 AP 模式下的 wifi 协议是否允许,我认为可以)。 如果您的 PC 通过以太网连接,那么您的路由器还充当交换机/网桥(这是第 2 层设备)并根据以太网规范转发数据包。 您可以通过谷歌搜索 MAC 学习来了解它。
这应该回答第二个问题,现在回答第一个问题。
实际上,我想知道为什么该表存储 IP 地址。 IP 下一跳地址不用于转发。 首先,请注意,从第 3 层(即路由器)的角度来看,距离为两跳的设备之间的通信使用第 2 层进行。当设备做出路由决策时,in 从 IP header 获取目标地址并查找下一跳,其中设备需要的是 a) 出接口 b) 如何使用接口的第 2 层协议到达下一跳。 然后设备构造一个适当的第 2 层 header 并将数据包发送到下一跳设备,这或多或少是相同的。 因此,实际上您的 PC 需要路由器接口的 MAC 地址,以便将数据包发送到子网之外的某个位置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.