路由器如何处理有限和定向广播
要回答您的问题,首先要了解的是,不会路由有限的广播帧。默认情况下,当路由器接收到目标地址在第 2 层或第 3 层广播的帧时,路由器只会丢弃该帧。这就是为什么说路由器是广播域的边界。
其中的一些例子是:
ff-ff-ff-ff-ff-ff
(二层广播)
255.255.255.255
(第3层限播)
这么一想,还真是有道理。如果路由器转发广播,单个 arp 请求将到达互联网上每个可访问的主机,这将非常低效且相当愚蠢。
另一方面,有时会路由定向广播。(IE 192.168.1.255/24
) 通常默认情况下此功能是禁用的,但可以通过ip directed-broadcast
在路由器上发出命令来启用。这将允许它根据其路由表转发定向广播,就好像它们是普通数据包一样。这并没有然而,让路由器转发受限广播,那些仍然默认阻止。对于您的原始问题,这也有点偏离主题,请参阅此 cisco 表单页面了解更多信息。
第 3 层广播而不是第 2 层?
要回答您的第二个问题,具有第 3 层广播地址而没有第 2 层广播地址的帧是没有意义的。这将破坏它作为广播帧的全部目的,并且不能完全正常工作。拥有单播第 2 层目标地址根本不会改变路由器的行为,因为路由器在第 3 层做出决定。路由器所关心的是该255.255.255.255
目标地址并丢弃数据包。
这对于根本不关心第 3 层地址的交换机来说很重要。交换机只会看到单播第 2 层地址。它不会将数据包发送到同一 vlan 上的所有接口,而是像处理任何其他单播目标地址一样使用源地址表 (SAT)。实际上,通过分配单播第 2 层地址,该帧根本不再是广播帧,即使它具有第255.255.255.255
3 层的地址。
DHCP 中继在实践中的工作原理
至于您的最后一个问题,DHCP 中继是路由器围绕不转发广播数据包的规则“作弊”的方式。让我们看一个 DHCP Discover 数据包:
- 源MAC:【源的单播mac】
- 目标 MAC:
ff-ff-ff-ff-ff-ff
- 来源IP:
0.0.0.0
- 目标IP:
255.255.255.255
- 源端口:UDP 68
- 目的端口:UDP 67
当路由器看到数据包到达ip helper-address
配置了命令的接口时,它会检查它是否与默认“帮助”或使用全局ip forward-protocol
命令配置的任何协议相匹配。在这种情况下,因为它是 DHCP,路由器看到目标端口匹配 UDP 67 并允许“帮助”数据包。然后,路由器将目标 IP 地址更改为命令255.255.255.255
配置的 IP 地址,并将ip helper-address
源地址更改为数据包到达的路由器接口的地址,并将数据包传递到路由逻辑的其余部分。
既然数据包有一个单播目标地址,路由器就会像对待任何其他数据包一样对待它。它为目标 IP 地址(现在是帮助程序地址)进行 arp,然后在将数据包发送到适当的接口之前替换第 2 层地址。
再回来
对于发送回客户端的 DHCP 提议,路由器使用本质上相同的过程。DHCP 服务器将提议发送到在 DHCP 发现数据包上指定为源地址的 IP 地址。所以离开 DHCP 服务器的数据包看起来像:
- 源MAC:DHCP服务器的单播mac
- Dest MAC:路由器或DHCP服务器默认网关的mac地址
- Source IP:DHCP服务器的单播IP地址
- 目的IP:DHCP Discover报文到达的第一个路由器接口的IP地址
- 源端口:UDP 67
- 目的端口:UDP 68
由于此数据包具有单播第 3 层目标地址,因此路由器将正常转发数据包,直到它到达具有 IP 地址与数据包目标 IP 匹配的接口的路由器。请记住,该路由器仍然具有该ip helper-address
接口上的配置。路由器检查数据包是否为 DHCP Offer,然后将数据包重写为广播数据包,并将其发送回该接口,知道 DHCP 客户端位于该网段的某处。离开路由器的数据包现在看起来像这样。
- Source MAC:路由器接口的单播mac
- 目标 MAC:
ff-ff-ff-ff-ff-ff
- Source IP:DHCP服务器的单播IP地址
- 目标IP:
255.255.255.255
- 源端口:UDP 67
- 目的端口:UDP 68
TL:博士;DHCP 中继使用ip helper-address
interface 子命令“欺骗”路由器不能通过在路由之前将数据包的目标 IP 地址更改为 DHCP 服务器的单播 IP 地址来转发有限广播的规则。这允许线路下游的所有路由器将数据包适当地路由到 DHCP 服务器。DHCP 服务器在回复时将数据包发送回第一个收到 DHCP Discover 数据包的路由器接口的单播 IP 地址(带有ip helper-interface
命令的接口)。当路由器收到返回的提议时,它会将其转换回广播数据包,并将其发送到与广播域中的客户端的接口。