了解 ARP 和路由器

网络工程 路由器 转变 arp
2021-07-09 03:08:25

假设有两台PC,PC A 和PC B。PC A 想要与PC B 进行通信,例如发送消息。我需要描述这个任务的 arp 数据包。

已知详情:

PC A -> SW 1 -> 路由器 -> SW 2 -> PC B

主机 A 和主机 B 在不同的网络中

PC A : MAC 地址 aaaa IP 地址 1.1.1.1 默认网关 4.4.4.4

PC B : MAC 地址 bbbb IP 地址 2.2.2.2 默认网关 5.5.5.5

所以,我想知道路由器会如何对 arp 数据包做出反应。如果 PC A 想向 PC B 发送消息,它将首先发送一个以自己的 MAC 和 IP 地址为源,PC B 的 IP 地址和 MAC 地址为零值作为目的地的 arp 数据包。以太网数据包将包含 PC A 的MAC 和 IP 作为源,但我不知道目标 ip 是 A 的默认网关还是像 MAC 地址一样的广播?我相信默认配置路由器禁用了代理 arp。实际会发生什么?

3个回答

你的推理是错误的。TCP/IP 自上而下处理层,而不是自下而上。

PC A 将首先在路由表中查找,并决定到达 PC B 的唯一途径是通过该路由表中指定的路由器。

如果路由器的 MAC 地址未知,它将发送一个 ARP 请求以找出对应于网关 IP 的 MAC 地址。

然后,该帧(包含 IP 数据包)将被发送到路由器的 MAC 地址,该地址将在其路由表中进行查找,以查看 PC B 连接到哪个接口或应该通过哪个下一跳进行路由。假设 PC B 连接到路由器的另一个接口,路由器将进行查找(如果需要,还可以进行 ARP 请求)以找出 PC B 的 MAC 地址,然后转发帧。

简单来说,如果 PCB 位于不同的网络中,PCA 不会关心 PCB 的物理地址。

当PCA想要向位于不同网络的PCB发送数据时,PCA需要知道其网关的mac。如果它不知道它会发送网关物理地址的arp。一旦为它的网关地址解析了ARP,它将使用PCB 的Destination IP 地址和网关接口的Destination Mac 地址。

如果在不同的网络中,那么 pc A 将通过执行二进制 AND 运算将其自己的地址和子网掩码与目标地址的地址和子网掩码进行比较来确定 pc B 是否位于同一子网中。
如果不在同一个子网内,那么 pc A 将把帧发送到它的默认网关,在这种情况下是路由器,如果它具有到该地址的确定路径,它将依次将其发送到目标主机。

路由器会用网关的mac地址回复arp。路由器将在退出出口接口之前剥离源 mac 地址并替换为自己的。