![当帧到达交换机或路由器时会发生什么?](https://linux22.com/image/1523582/%E5%BD%93%E5%B8%A7%E5%88%B0%E8%BE%BE%E4%BA%A4%E6%8D%A2%E6%9C%BA%E6%88%96%E8%B7%AF%E7%94%B1%E5%99%A8%E6%97%B6%E4%BC%9A%E5%8F%91%E7%94%9F%E4%BB%80%E4%B9%88%EF%BC%9F.png)
据我了解,当一台 PC 通过交换机向另一台 PC 发送一个帧时,该帧保持不变。交换机接收该帧并发送完全相同的帧。但如果我们有两台 PC 连接到路由器并在它们之间发送某些东西,会发生什么情况?
答案1
“据我了解,当一台 PC 通过交换机向另一台 PC 发送一个帧时,该帧保持不变。”
你说得对;交换机不会以任何方式修改它们转发的帧。这被称为透明桥接正如这篇 O'Reilly 文章所解释的那样基本开关操作:
以太网交换机的设计使得它们的操作对于网络上的设备是不可见的,这解释了为什么这种连接网络的方法也被称为透明桥接“透明”的意思是当你将交换机连接到以太网系统时,桥接的以太网帧不会发生任何变化。
“但是,如果我们有两台电脑连接到路由器并且在它们之间发送一些内容,会发生什么情况呢?”
总结
路由器转发的任何数据包都将被修改。所需的修改包括新的目标 MAC 地址和新的帧校验序列。但这只是路由器上发生的一小部分……
与交换机不同,路由器根据数据包的OSI 第 3 层目标地址。在本例中,这是互联网协议(IP) 地址。因此,数据包会发生什么取决于数据包的目的地。让我们使用您引用的图像作为示例:
这里我们有一个具有两个接口的路由器:e1/1/1(我将其称为E1) 和e1/1/2(我将其称为E2)。请注意,路由器的两个接口位于不同的子网中,对于路由器而言,情况必须始终如此:
- E1 连接到子网 10.0。0.0/24
- E2 连接到子网 10.0。1.0/24
现在,假设计算机 A(IP 地址为 10.0.0.2/24,因此位于子网 10.0.0.0/24 中)向目标 IP 地址 10.0.1.2 发送一个数据包。该数据包到达路由器后,将发生以下情况:
- 数据包到达接口 E1
- 路由器确定目标地址是 10.0.1.2
- 路由器检查其路由表以确定数据包应该去往何处
- 路由表表明接口 E2 连接到子网 10.0.0.0/24
- 路由器准备在接口 E2 上传输数据包。这需要以多种方式修改数据包。例如,新数据包将具有:
- 新的数据包在接口 E2 上传输
一旦数据包被发送到连接到路由器接口 E2 的网段,它就会被 IP 地址为 10.0.1.2 的计算机 B 接收。
假设计算机 A 向目标 IP 地址 10.0.7.44 发送一个数据包。数据包到达路由器后,将发生以下情况:
- 数据包到达接口 E1
- 路由器确定目标地址是 10.0.7.44
- 路由器检查其路由表以确定数据包应该去往何处
现在会发生什么?
好吧,如果如图所示,路由器确实只有两个接口,那么路由器会丢弃数据包,因为它没有到目标网络的有效路由。
然而,在现实世界中,路由器可能至少有一个接口被配置为默认路由或者最后手段。在路由表中,这是与网络 0.0.0.0/0 关联的接口。如果路由器没有到有效网络的特定路由来处理发往 10.0.7.44 的数据包,则作为其“最后手段”,它将在与默认路由关联的接口上传输数据包。
默认路由功能非常重要。如果没有它,路由器就需要为 Internet 上的许多(但不是全部)IP 网络提供路由表条目。这样的路由表会非常大。与具有默认路由的路由器相比,这样的路由器需要:
- 更多的内存来存储路由表
- 需要更多 CPU 时间来检查表格(对每个传入数据包都执行此操作!)
- 过度和频繁路由器必须从互联网上的许多其他路由器获取路由表更新,以保持其路由表的准确性。否则,数据包可能会通过实际上不再与目标网络连通的接口转发。
答案2
可以将框架想象成在塑料管中移动的塑料胶囊(一些免下车银行的窗口曾经有这种胶囊)。数据包是胶囊内的信封,数据位于信封内。
交换机是一堆不同管道汇合的地方。它将查看网络上的源地址和目标地址胶囊,并以此为基础,将其通过适当的管道传送至目的地。
路由器关心信封,而不是胶囊。当路由器收到胶囊时,它基本上会打开胶囊然后丢弃它。然后它会查看信封并确定它需要去哪里。信封可能需要送到某人的办公桌上。在这种情况下,它会将信封交给不同的传送系统(协议)。或者它可能决定信封需要回到管道系统中,在这种情况下,它会将其放入新的胶囊中并将其发送出去。
当然,这是非常简单的,但希望它能让画面更清晰一些。
答案3
路由器本质上是一个具有附加 NAT 转换功能的交换机,能够区分入站和出站流量。
当涉及互联网并使用 NAT 时,端口转发规则决定数据包(帧)会发生什么。如果只是本地的,则不使用整个 NAT,因此只使用内部交换机。因此,与常规交换机完全相同,数据包保持不变。
答案4
当数据链路层接收到数据包时,它会将数据包数据与
帧头和帧尾封装在一起,形成帧。
帧头包含起始帧、寻址、类型和控制等信息。
帧尾包含错误检测和停止位等信息。
场景 #1
帧在同一个 LAN 中传输:
当 PC1 向同一个网络中的 PC2 发送帧时,目标 MAC 地址将是 PC2 的 MAC 地址,而源 MAC 地址将是 PC1 的 MAC 地址。
在这种情况下,帧从源到目标不会发生任何变化。
场景 #2
帧在不同 LAN 中传输:
当 PC1 向不同网络中的 PC2 发送帧时,目标 mac 地址将是网关路由器的 mac 地址,而不是 PC2 的 mac 地址。源 mac 地址将是 PC1 的 mac 地址。帧被发送到路由器。
网关将帧解封装为数据包,并使用新的帧头和尾部对其进行封装。在这个新帧中,数据包数据相同且未发生改变。
我们假设 PC2 是路由器之后接收帧的下一跳。在新的帧头中,目标 mac 地址将是 PC2 的 mac 地址,源 mac 地址将是路由器的 mac 地址。
在这个例子中,从源到目的地的数据包数据必须更改其帧头和尾部,因为它要经过不同的中间设备。