路由器如何处理受限广播和定向广播
要回答您的问题,首先要了解的是有限的广播帧不会被路由。默认情况下,当路由器收到带有在第2层或第3层广播的目标地址的帧时,路由器会简单地丢弃该帧。这就是为什么路由器被称为广播域的边界的原因。
这些示例包括:
ff-ff-ff-ff-ff-ff
(第2层广播)
255.255.255.255
(第3层有限广播)
考虑一下,这是有道理的。如果路由器转发广播,则单个arp请求将到达Internet上的每个可访问主机,这将导致效率极低且非常愚蠢。
另一方面,定向广播有时会被路由。(IE 192.168.1.255/24
)通常默认情况下禁用此功能,但可以通过ip directed-broadcast
在路由器上发出命令来启用此功能。这将允许它根据其路由表转发定向广播,就好像它们是普通数据包一样。这并没有然而,让路由器转发受限广播,那些仍然默认阻止。对于您的原始问题,这也略有偏离主题,有关更多信息,请参见此cisco表单页面。
第3层广播但第2层不是吗?
要回答您的第二个问题,没有第2层广播地址的第3层广播地址的帧是没有意义的。这将破坏它作为广播帧的全部目的,而不能完全正常工作。具有单播第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
配置了命令的数据包到达接口时,它将检查是否匹配默认情况下“受帮助”或使用global ip forward-protocol
命令配置的任何协议。在这种情况下,因为它是DHCP,所以路由器会看到目标端口与UDP 67相匹配,并允许该数据包被“帮助”。然后,路由器将目标IP地址从更改为命令255.255.255.255
配置的IP地址,并将ip helper-address
源地址更改为数据包到达的路由器接口的地址,并将数据包传递到其余的路由逻辑。
现在,数据包具有单播目标地址,路由器将其像对待其他任何数据包一样对待。它先发送目的地IP地址(现在是辅助地址),然后替换第2层地址,然后再将数据包发送出适当的接口。
再次回来
路由器对发送回客户端的DHCP服务使用相反的过程。DHCP服务器将报价发送到在DHCP Discover数据包上指定为源地址的IP地址。因此,离开DHCP服务器的数据包如下所示:
- 源MAC:DHCP服务器的单播mac
- 目的地MAC:路由器或 DHCP服务器的默认网关的mac地址
- 源IP:DHCP服务器的单播IP地址
- 目的IP:DHCP Discover数据包到达的第一个路由器接口的IP地址
- 源端口:UDP 67
- 目标端口:UDP 68
由于此数据包具有单播第3层,目的地址路由器将正常转发该数据包,直到它到达路由器的IP地址与该数据包的目的IP匹配的接口为止。请记住,从前该路由器ip helper-address
仍在该接口上进行配置。路由器检查数据包是否为DHCP提供,然后将数据包重写为广播数据包,并在知道DHCP客户端在该网段的某个位置将其发送回该接口。现在,离开路由器的数据包看起来像这样。
- 源MAC:路由器接口的单播mac
- 目的地MAC:
ff-ff-ff-ff-ff-ff
- 源IP:DHCP服务器的单播IP地址
- 目的IP:
255.255.255.255
- 源端口:UDP 67
- 目标端口:UDP 68
TL:DR; DHCP中继使用ip helper-address
interface子命令“ cheat”绕着规则,即路由器无法通过在路由之前将数据包的目标IP地址更改为DHCP服务器的单播IP地址来转发有限广播。这允许所有下行路由器将数据包适当地路由到DHCP服务器。回复时,DHCP服务器将数据包发送回路由器接口的单播IP地址,该接口首先接收到DHCP Discover数据包(带有ip helper-interface
命令的地址)。当路由器收到报价时,它将其转换回广播数据包,并将其发送到与广播域中的客户端的接口。