当设备通过以太网电缆连接到路由器时,路由器是否充当交换机的作用?

当设备通过以太网电缆连接到路由器时,路由器是否充当交换机的作用?

在我的网络课上,我了解到路由器将数据发送到网络上的所有计算机,而交换机只将数据发送到所需的 MAC 地址。

我的问题是,如果设备通过以太网电缆连接到路由器(如 BT-Infinity),数据包是否仍会传输到网络上的所有设备?还是它们仅传输到所需的 MAC 地址?

答案1

在我的网络课上,我了解到路由器将数据发送到网络上的所有计算机,而交换机只将数据发送到所需的 MAC 地址。

交换机工作在第 2 层,使用 MAC 地址来识别主机。交换机只能移动框架到该交换机上的另一台主机。假设当您发送框架到 MAC 地址,即它与您自己位于同一介质上。

路由器在第 3 层工作,使用 IP 地址来识别主机。

知识产权数据包独立于介质;不在私有范围内的地址应在全球范围内可达。第 3 层有网络使其不关心实际介质(或第 2 层所做的任何事情)。

但显然,您有可直接访问的本地邻居(例如,在您的交换机上,或与您的无线 AP 关联),然后您可能想要与您的网络外部的主机进行通信。因此,需要路由器或转发器的概念。同一网络中的主机可以直接相互访问,如果它们不在同一网络中,则需要一个或多个路由器在网络之间切换流量。

因此路由器不会将数据发送到网络上的所有计算机,而是转发流量之间网络。

我的问题是,如果设备通过以太网电缆连接到路由器(如 BT-Infinity),数据包是否仍会传输到网络上的所有设备,还是仅传输到所需的 MAC 地址?

请记住,大多数消费者“路由器”实际上是路由器和交换机的组合。

如果多台机器连接到交换机,则所有设备将仅在以下条件下从源接收流量:

  • 消息来源已发送广播框架(第 2 层处理帧,而不是数据包)- 即,帧到目标 mac FF:FF:FF:FF:FF:FF。这是广播MAC地址。发往网络广播地址的 IP 数据包可能会导致这种情况发生。

  • 交换机不知道目标 MAC 地址位于哪个端口。因此它洪水每个端口框架尝试找到它。它会记住响应来自哪个端口,并且将来只向该目的地发送流量苹果通过该端口。

  • 交换机忘记了目标 MAC 地址位于哪个端口。它会再次进行泛洪。交换机可以记住有限数量的 MAC 地址。

  • 路由器所做的一切都与此无关。

A中心不记住 MAC 地址,并且始终将所有帧从所有端口泛洪出去。但是自从 100Mbit 网络时代以来,集线器就不再常用,我相信只有非常老的路由器才会有内置集线器,而不是内置交换机。如果您的路由器有千兆 LAN 端口,那么 100% 肯定不是集线器。

因此基本上帧只会传输到所需的 MAC,除非交换机之前没有见过该 MAC,或者是广播 MAC。

答案2

我认为您可能对这个概念有一点误解。真正的交换机只知道本地设备 - 它可以通过 MAC 地址直接与之通信的设备。当帧进入交换机时,交换机会查看目标 MAC 地址,检查其 CAM 表以查找出口接口,然后发送帧。

另一方面,路由器更进一步。帧进入路由器;路由器从帧中剥离数据包;路由器查看数据包中的目标 IP 地址;路由器检查其路由表以查找下一跳;路由器检查其 ARP 表以查找下一跳 IP 的 MAC 地址(如果 ARP 表中没有条目,则检查 MAC 的 ARP);然后路由器检查其等效的 CAM 表以查找出口接口;然后路由器将数据包封装到第 2 层帧中并将其发送,这可能是目标设备或另一个路由器,以完成此过程,直到数据包最终到达其目的地。

所以对你的问题的简短回答是“否”。与交换机一样,路由器仅将数据包发送到下一跳设备,该设备可能是目的地或另一个路由器。

此示例忽略了多播、定向广播、泛洪等。

答案3

谁在教这门课?我建议你换课,或者至少换个老师,因为你学到的东西并不正确。

您似乎有点困惑:您所说的“网络中的所有设备”是什么意思?您是在谈论 IP 广播还是帧泛洪?

当您通过以太网电缆将设备连接到路由器时,您连接的实际上是路由器中嵌入的交换机。当您购买现成的路由器时,也会发生同样的事情,您可以开箱即用无线上网,因为它内部有一个内置接入点,因此您不必自己出去购买外部接入点。

总而言之,路由器上的有线接口是交换机接口。路由器即使在第 3 层也能处理流入这些接口的数据包,但除此之外,它们的行为将与普通交换机端口一样。

答案4

使用 Wireshark 进行测试

区分交换和路由的一种方法是查看以太网帧的 MAC 地址。

如果您直接获取另一台计算机的 MAC 地址,它就充当着一个交换机的作用。

如果您获得了路由器的 MAC 地址,它就可以像路由器一样运行。

例如,您可以通过从计算机 1 的终端 1 ping 计算机 2 来测试这一点:

ping 192.168.1.102

然后在计算机 1 的终端 2 上:

sudo wireshark -f 'host 192.168.1.102 and icmp' -k

然后,你可以通过查看数据包拆解来判断,并将其与通过以下方式获取的 MAC 地址进行比较:

ip a

从两台机器。

在我的 TP-Link archer VR2800 上,我观察了以太网和 Wi-Fi 上的交换机行为。

在两台 Ubuntu 23.10 机器上测试。

相关内容