不同网络中的数据包流
先决条件 – ARP 工作原理,同一网络中的数据包流
要将数据包传递到目标主机,应该知道源 IP、目标 IP、源 MAC 地址和目标 MAC 地址。数据包流的一些基本规则:
- 如果目标主机存在于同一网络中,则数据包直接传送到目标主机。
- 如果目标主机存在于不同的网络中,则数据包首先被传递到默认网关,默认网关又将数据包传递给目标主机。
- 如果 ARP 未解析,则首先解析 ARP。
- MAC 地址从不跨越其广播域。
解释 -
这是一个拓扑,其中有主机A(IP地址- 10.0.0.10和MAC地址- 000D.BD22.7C22),主机C(IP地址- 10.0.0.9),主机B(IP地址- 20.0.0.10) , 主机 C (IP 地址-20.0.0.9 和 MAC 地址 – 00E0.A3E2.03DC) 和路由器 (IP 地址 – 10.0.0.20 和 MAC 地址 – 000B.BE8E.5201 on fa0/0,IP 地址 – 20.0.0.20和 MAC 地址 – fa0/1 上的 000B.BE8E.5202)。
现在我们将尝试从主机 A(IP 地址 - 10.0.0.10)ping 主机 B(IP 地址 - 20.0.0.10)。首先,源主机在源IP地址、源子网掩码和目标IP地址、源子网掩码之间进行AND运算,以了解目标是否存在于相同或不同的网络中。
如果结果相同,则目的地在同一个网络中,否则在不同的网络中。在这里,目的地存在于不同的网络中,因此结果会有所不同,数据包将被传递到默认网关。
我们看到生成了 2 条消息 ICMP(紫色)和 ARP(绿色)。 ARP 已生成,因为 ARP 尚未解析。
现在由于应该首先解析 ARP,因此将广播 ARP 请求,并由交换机接收:
交换机依次向主机和路由器广播 ARP 请求。 PC 丢弃该请求,路由器接受它。
现在 ARP 回复由路由器单播到主机 A,如上图所示。
现在 ICMP 数据包将单播到默认网关(IP 地址 - 10.0.0.20 和 MAC 地址 - 000B.BE8E.5201),如上图所示。
注 – ICMP 数据包将单播到默认网关,因为 ARP 现在已解析。
现在必须再次解析 ARP,因为路由器必须将数据包传递给主机 B,而 ARP 表中没有主机 B 的条目。因此,ARP 请求在网络 20.0.0.0/24 中广播。数据包由交换机接收,然后将请求广播到主机 B 和 D。主机 D 将拒绝该请求,主机 B 将接受它并为 MAC 地址 000B.BE8E.5202(路由器 fa0/1 MAC 地址),因为必须将 ARP 回复提供给已收到 ARP 请求的那个 MAC 地址。
如图所示,ARP回复包单播到路由器接口fa0/1的MAC地址(000B.BE8E.5202),源MAC为00E0.A3E2.03DC。
注 –此处,目标 MAC 地址是主机 B 的 MAC 地址 (000B.BE8E.5202)。目标 MAC 地址是主机想要通过其 ARP 请求来解析 ARP 的设备的 MAC 地址。
现在ICMP echo-request 数据包将单播到主机B,如上图3 所示。
主机 B 将生成一个 ICMP 回显响应来响应主机 A 的 ICMP 回显请求,该响应将首先传送到 20.0.0.20(路由器的接口 IP 地址),然后单播到主机 A。
MAC 地址如何从不跨越其广播域?
这是主机 A 将 ICMP 回显请求转发到其默认网关时的 IP 和以太网标头。因此源IP为10.0.0.10,目的IP为10.0.0.20,源MAC地址为000D.BD22.7C22(主机A的MAC地址),目的MAC地址为000B.BE8E.5201(路由器的fa0/0接口MAC地址)。
但是现在当 ICMP echo request 消息从路由器的 fa0/1 接口转发到主机 B 时,源 MAC 地址更改为 000B.BE8E.5202(路由器的 fa0/1 接口 MAC 地址),目标 MAC 地址为 00E0.A3E2 .03DC(主机 B MAC 地址)。
这里不使用路由器的fa0/0接口MAC地址作为源MAC地址,而是使用fa0/1 MAC地址作为MAC地址。因此,fa0/0 不用于其他广播域(20.0.0.0/24 网络),因此 MAC 地址永远不会跨越其广播域。这样,在 2 个不同的网络中执行 PING。