![使用UDP数据包制作桥接表](https://linux22.com/image/526101/%E4%BD%BF%E7%94%A8UDP%E6%95%B0%E6%8D%AE%E5%8C%85%E5%88%B6%E4%BD%9C%E6%A1%A5%E6%8E%A5%E8%A1%A8.png)
假设所有桥接表都是空的(或者至少没有我的连接的源和目标),并且想要用我的发送数据包更新它们的桥接表(当我发送数据包时,所有桥接器都知道“发送方主机”在哪里,当“接收方主机”发送 ACK 信号时,所有桥接器都会找到“接收方主机”在哪里),但如果一开始我的发送方主机发送UDP(理论上大的UPD数据包)数据包(不需要ACK信号)那么路径上的所有桥都必须播送所有端口上的数据包都无法理解确切的路径。
我不知道在实践中这是否有可能,但我认为在理论上这是有可能发生的。
答案1
我不确定我是否真的理解了您的问题,但我认为您可能对路由的工作原理感到困惑。路由表不是基于通过路由器的数据包构建的。路由器必须在数据包到达之前知道将数据包发送到哪里,否则数据包将被丢弃。
此外,一般来说路由器不是知道数据包的完整传输路径。它们所知道(或关心)的只是下一跳。
我能想到的唯一更新方式与你所说的有点相似的表是 ARP 表。在发出 ARP 请求后,当数据包发送时,这些表会动态更新。
你能解释一下你在问什么问题吗?
答案2
如果我们假设交换机 A 没有第 2 层转发表(mac 地址表、桥接表,无论您想怎么称呼它),我们同样可以假设连接到交换机的主机上没有 ARP 信息。
因此,为了发送 UDP 数据包,发送主机 (A) 需要知道接收主机 (B) 的 MAC 地址。它将发送广播 ARP 请求,询问哪个 MAC 地址具有给定的 IP。
这会将主机 A 的 MAC 地址输入到转发表中。之后,主机 B 将看到 ARP 请求并做出响应。这会将主机 B 的 MAC 地址输入到转发表中。
如果由于某些不为人知的原因,存在 ARP 解析,但交换机的转发表中却没有任何内容,则交换机将把具有未知 MAC 地址的数据包泛洪到所有端口(通常,数据包来自的端口除外)。