通过网络 Ping 命令
您的图表有点误导 - 现代以太网使用点对点链接,因此 SW10 将有两个连接到 SW30 和 SW40。实际上,您的图表显示了一种过时的以太网介质,具有共享访问和多抽头连接,如 10BASE5。
对于点对点链路,SW10 有两个不同的链路通向 SW30 和 SW40,因此使用两个不同的端口。
Ping 使用通过 IP 传输的 ICMP 回显请求和回复。在这个网络中,IP 反过来使用以太网帧进行第 2 层传输。为此,IP 使用 ARP (IPv4) 或 NDP (IPv6) 将目标 IP 地址解析为目标 MAC 地址。这两种方法都已经填充了交换机的 MAC 表,因此实际的回声请求/回复将沿着所需的路径转发。
在交换机方面,第 2 层和第 3 层有什么区别?
在学习基本功能时,不要担心第 3 层交换机。基本交换机仅使用第 2 层地址。路由器使用第 3 层地址。第 3 层交换机包含路由器功能。
第 3 层交换机是否有路由表而第 2 层交换机没有?
是的。三层交换机中的路由器需要有一个路由表,而基本交换机不需要它(除非它具有带内管理功能)。
如果我查看开关 20、30、50,它们的表是什么样的?
当一些流量穿过网络时,所有 MAC 表都会被填充,将端节点的 MAC 地址与它们连接的相应交换机端口相关联。
在 SW10 上,A 的 MAC 地址与左侧端口相关联,B 和 C 的地址与右侧端口相关联,依此类推。假设基本的 L2 交换机,交换机本身没有 MAC 地址,它们正在透明地桥接。
详细:
- PC A 准备向 PC B 发送 ping/echo 请求。由于 PC A 和 B 共享一个公共子网,A 需要知道 PC B 的 MAC 地址。
- PC A 向 PC B 的 MAC 地址发送 ARP 请求。ARP 请求作为第 2 层广播发送。这使得所有交换机都知道 PC A 的 MAC 地址及其各自的端口。
- PC B 收到 ARP 请求并回复其 MAC 地址。回复作为单播发送到 PC A 的 MAC - 交换机已经获悉,因此该帧沿途转发到 PC A。
- 沿途的交换机也使用 PC B 的回复来了解 B 的 MAC 地址及其连接的端口。
- PC A 可以创建 ICMP 回显请求,将其封装在寻址到 PC B 的 MAC 的以太网帧中并发送出去。
或者,PC B 可以将 ARP 回复作为广播发送,使其 MAC 地址为所有交换机和其他感兴趣的主机所知。广播 ARP 回复是可能的,但不是标准的(类似于免费 ARP)。
SW10 需要知道 SW20 和 A 的 MAC 地址还是只知道最近的跃点 (SW20)?
每个交换机只知道自己端口的关联,即。它的哪个链接通向目的地。
一旦您掌握了第 2 层转发(桥接)的工作原理,您就可以查看第 3 层转发(路由)——不要混合它们,它们是完全独立的。
这个网络有一些大问题。
图表:让我们从图表开始。将以太网绘制为云是非常不寻常的。云表示“未知和无形数量的网络设备”,通常这些是路由器。有时您会绘制成云状的交换机,但这在有关交换机及其地址缓存的问题中没有任何意义。
假设您的以太网是单个以太网......
没有路由器:所谓的“第 3 层交换机”不是交换机:它们是在同一个盒子中带有路由器的交换机。您还可以获得路由器的交换机模块,它是在同一个盒子中带有交换机的路由器。路由器和交换机的任何配置与其他配置之间的区别仅在于性能和营销重点:“你这可怜的东西,不只是一个第 2 层交换机吗?”。明确一点:第 3 层交换机是一件了不起的事情,但它并不是真正的交换机。
假设您的交换机是纯交换机(第 2 层转发)...
无 VLAN:您可以使用 VLAN 等拆分您的网络,但您没有提及它。
假设您的交换机都是普通的、单默认未标记的无 VLAN 普通交换机......
网络有环路
(实际上有多种方式可以在实际的双绞线以太网中解释该图,但无论采用哪种方式,问题都是相同的。)
你的网络实际上是这样的:
A +-----------------------+ B
| | | |
===1===2===3===sw20 ===1===2===3===sw10
| |
===1===2===============3===4===sw30
| |
===1===2===3===sw50 ===1===2===3===sw40
| | |
+---------------+ C
你可以看到这个以太网中有环路。以太网不允许有环路,因为帧会循环往复。无论来自 A 的第一帧是什么,都将进入交换机 20 的端口 1。交换机 20 具有空的 MAC 地址映射,会将其从其所有端口 2 和 3 中泛洪到交换机 10 和 30。这些依次将发送到每个端口其他。让我们假设 10 首先发送到 30,到达端口 3。交换机 30 会将它从端口 2 泛洪,到达交换机 20 的端口 3,然后从端口 1 和端口 2 泛洪。它将无限期地循环。您通常会看到每个交换机上的所有指示灯都亮起,并且在您拔下或重新启动某些设备之前没有网络流量。
除非你断开一些电线或引入生成树协议来为你做这件事,否则这个网络将无法运行。
注意原始图表上的红线:我猜这些是生成树断开连接。
假设您在所有交换机上引入了生成树协议,并且网络已断开 SW20 端口 3 和 SW50 端口 3。
网络现在没有环路
直到发生某些变化——电缆被拔掉、某种系统故障、某些东西被关闭——网络现在看起来像这样,SW20:3 和 SW50:3 都被 STP 禁用:
A +-----------------------+ B
| | | |
===1===2===X===sw20 ===1===2===3===sw10
|
===1===2===============3===4===sw30
| |
===1===2===X===sw50 ===1===2===3===sw40
|
C
_在所有假设到位的情况下,我们可以回答您的问题。
框架
假设所有 ARP 缓存和 MAC 端口映射表都为空。
记住 ARP 请求是广播的,ARP 回复是单播的。
- 在 A 上启动的命令将 ping 数据包发送到 C 的 IP 地址。
- A 的 ARP 缓存没有 C 的条目,所以它的 ARP 也没有
- A 发送 ARP 请求
- ARP 请求到达 SW20:1(SW20 记住 A 的以太地址在 :1)
- SW20 看到广播,淹没了 :2
- ARP 请求到达 SW10:2(SW10 记住 A 的以太地址在 :2)
- SW10 看到广播,从 :1 和 :3 溢出
- ARP请求到达B,B得知A的以太地址
- B 忽略其他主机的 ARP 请求
- ARP 请求到达 SW30:3(SW30 记住 A 的以太地址在 :3)
- SW30 看到广播,从 :1 和 :4 溢出
- ARP 请求到达 SW50:2 和 SW40:2(SW50 在 :2 上记住 A,SW40 在 :2 上记住 A)
- SW50 可以看到广播,但没有其他上行端口可以从
- SW40 看到广播,淹没了 :3
- ARP 请求到达 C。C 得知 A 的以太地址。
- C 识别自己并向 A 的以太地址发送 ARP 回复
- ARP 回复到达 SW40:3。(SW40 记得 C 的以太地址在 :3 上)
- SW40 知道 A 处于 :2,以这种方式发送帧
- ARP 回复到达 SW30:4(SW30 记住 C 的以太地址在 :4)
- SW30 知道 A 处于 :3,以这种方式发送帧
- ARP 回复到达 SW10:1(SW10 记住 C 的以太地址在 :1)
- SW10 知道 A 处于 :2,以这种方式发送帧
- ARP 回复到达 SW20:2(SW20 记住 C 的以太地址在 :2)
- SW20 知道 A 处于 :1,以这种方式发送帧
- ARP 回复到达 A,A 获知 C 的以太地址
- A 现在创建 ICMP ECHO REQUEST IP 数据包,用 C 的目标以太地址包裹在以太帧中
- A 发送 ICMP 请求
- ICMP 请求到达 SW20:1
- SW20 知道 C 在 2 上,以这种方式发送帧
- ICMP 请求到达 SW10:2
- SW10 知道 C 为 1,以这种方式发送帧
- ICMP 请求到达 SW30:3
- SW30 知道 C 在 4 上,以这种方式发送帧
- ICMP 请求到达 SW40:2
- SW40 知道 C 在 3,以这种方式发送帧
- ICMP 请求到达 C
- C制定ICMP ECHO REPLY,用A的ether dest,从ARP缓存中得知
此时,除 SW50 之外的每个交换机都知道它们的哪个接口同时找到 A 和 C。(交换机 50 只知道 A,因为它没有看到 C 的回复。)
ICMP ECHO REPLY 直接进入 C->SW40->SW30->SW10->SW20->A。
使用单播消息
如果 A 知道 C 的以太地址,但没有任何交换机知道(例如,如果它们刚刚重新上电),A 将跳过 ARP 请求,这是一个广播。它会做的第一件事是发送 ICMP ECHO REQUEST,单播。实际的帧转发将与交换机将回声请求从每个端口泛洪一样,就像广播一样,因为它不知道它在哪里。
如果两台 PC 都在同一网络上,则根本不会发生路由。
Sw20 将接收来自 PC A 的 ICMP 帧并将帧转发到它知道 PC C 连接到的接口,或者,如果它在 CAM 表中还没有 PC C 的 MAC,Sw20 将泛洪该帧。网络中的下一个交换机(假设是 Sw10;图中的红线表示 Sw20 和 Sw30/Sw50 之间的链接可能被 STP 阻塞)将按照与之前相同的逻辑将帧转发到正确的接口, 如果 PC C 的 MAC 不在其 CAM 表中,则再次泛洪帧。
如果 PC C 最终收到该帧,它将作出响应,并且每个交换机将相应地填充其 CAM 表。并且您可能已经猜到每个交换机已经知道要转发回复帧的端口,因为 PC A 的 MAC 现在在 CAM 表中!
默认情况下,Cisco/Juniper/HP 交换机上的 MAC 每 300 秒从 CAM 表中老化(此值可以在托管交换机上更改) - 我认为这是非常标准的,但我不确定。每次主机发送/接收任何帧时,交换机都会重置计时器。
