路由器为什么以及如何破坏广播域?(并且交换机不会,除非他们使用 VLAN 等)。
答案其实很简单,归结为协议实现和路由器/交换机应该执行的网络工作功能。
我冒昧地将这张来自 TCP/IP 插图的图像包括在内,vol.1。
如上所示,终端系统(主机)实现整个协议栈,直到应用层,而交换机实现(并包括)第 2 层数据链路,而路由器实现(并包括)第 3 层。
路由器和交换机作为抽象
现在,有人可能会指出,例如存在所谓的第 3 层交换机。对此的答案是,最好将“路由器”和“交换机”视为抽象而不是特定的网络设备。
我的意思是,路由器由它执行的功能来识别——在第 3 层路由和转发——而不是通常代表路由器的物理设备。为了详细说明这一点(否则我可能只会把水搅浑),例如,运行 OpenWrt 的路由器在其协议实现方面显然不限于第 3 层,因为它可以运行 Linux 终端系统通常可以运行的大部分内容。
此外,所有路由器通常都有一个 Web 界面,这意味着它们运行一个 Web 服务器,其中包含传输层和应用程序层。交换机有时也会有一个 Web UI。
但这是误导。虽然交换机和路由器可能实现传输层和应用层,但它们与它们的角色无关:分别是交换和路由。这些仅用于管理目的等等——这就是我将交换机和路由器视为功能抽象的意思。端系统可以进行 IP 转发和路由 - 在这种情况下,即使它是一个端系统,它也像路由器一样工作 - 它执行路由器的功能。
我之所以谈论这个,是因为您似乎有正确的想法(“充当网关”等,但还没有完全掌握它)。
一个路由器充当的桥梁,是,在这种情况下,所有意图和目的不是路由器,而是一个桥梁,因为这是功能它执行。因为只有一个“路由器”(一个实际的路由器,或者一个充当一个的设备——同样,它也可能是一个实现路由功能的终端系统)破坏了一个广播域,你假设它们充当了桥接器,那么没有,他们不会破坏广播域。
路由器首先如何“破坏”广播域?
假设我们有一个带有两个接口的路由器,在第 3 层寻址为 10.10.10.0/24 和 192.168.1.0/24,有 4 个主机通过有线以太网连接到它。主机 A 是 10.10.10.10。
让我们以主机 A 发出广播数据包(携带 ARP 或其他任何内容)的场景为例:
hostA 构建数据包,并最终将其封装到一个数据链路帧中,该帧由 NIC 推出,寻址所有 Fs(以太网广播)
帧到达路由器,该帧是数据链路层的广播帧 - 所有 Fs。接下来发生的事情至关重要。如果这是一个交换机,被确定为广播的帧将被转发出所有接口,除了它源自的接口。但由于这是一个路由器,帧被解封装并向上传递到网络层。IP 广播是如何寻址的?它将是 10.10.10.255 或 255.255.255.255(指当前网络),这将取决于源地址 - 10.10.10.10/24。这意味着路由器将确定广播是针对 10.10.10.0/24 网络的,这就是它转发数据包的地方,将它发送到与该网络关联的所有接口。
这意味着即使连接到同一路由器的两个设备在数据链路层可达,并且在数据链路层属于同一广播域的一部分,但它们在网络层可能并非如此。作为路由器的路由器总是会解封装数据包并在第 3 层查看其报头,这可能表明上述两个设备实际上不是同一网络的一部分,因此广播受到限制。
这就是路由器“破坏”广播域的方式。