我有一个网络拓扑如下
A --------- B --------- C
/|\ /|\ /|\
/ | \ / | \ / | \
A1 A2 A3 B1 B2 B3 C1 C2 C3
A、B、C 是三层交换机,它们有自己的子网。每台交换机有 3 台服务器 A1~A3、B1~B3、C1~C3 连接它们,因此 A1~A3 在子网 A 中,B1~B3 在子网 B 中,C1~C3 在子网 C 中。
存在交换机内业务,例如从A1到A3,以及交换机间业务,例如从A1到C1。显然,交换机内的流量将被交换(第 2 层),而交换机间的流量将被路由(第 3 层)。
我想知道交换机(例如 A)如何确定数据包是否需要交换或路由?
我的理解是基于ARP协议,因为它决定了数据包的目的MAC地址。
如果 A1 要发送一个数据包,它会在其本地 ARP 表中查找目标 IP 地址或通过网络查询。如果 dst IP 与 A1 位于同一子网内,例如 A3,则 A3 的 MAC 地址将被返回,并封装在传出数据包的 dst MAC 字段中。如果 dst IP 在另一个子网,比如 C3,那么交换机 A 连接 A1 的接口(假设是接口 1)的 MAC 地址将被返回,然后放入传出数据包的 dst MAC 字段。
当此数据包到达交换机 A 时,交换机 A 将检查目标 MAC 地址。如果这个 MAC 地址与交换机 A 的接口 1 的 MAC 地址不匹配,则会在 MAC 表中查找出端口。然后这个数据包被切换到那个端口,它的 src 和 dst MAC 地址保持不变。否则,该MAC地址与交换机A的接口1的MAC地址匹配,交换机A继续在路由表中查找数据包的dst IP地址以查找出端口。那么这个数据包的 src 和 dst MAC 地址都会被 A 的出口 MAC 地址和交换机 B 的入口 MAC 地址替换(也是通过 ARP 协议获得的)。
我的理解是否正确,我错过了什么吗?