假设在任何节点中都没有 ARP 缓存,并且交换表是空的,并且源和目标的 IP 地址是已知的(使用 DNS)。此外,所有节点都被认为在同一个子网中。如果 n1 想向特定节点发送数据包,比如 n2,它需要 n2 的 MAC 地址。
我认为在这种情况下,将发送一个 ARP 请求以获取相应的 MAC 地址。但是我的朋友说n1会广播主帧,所有节点都会提取帧直到网络层才能知道数据包是否是给他们的。
无论是第一种方法还是第二种方法都会改变switch中表的更新方式。那么,有人可以澄清我的困惑吗?
2 回答
它发生的方式是需要将第 3 层地址解析为第 2 层地址的主机将广播 ARP 请求。具有该第 3 层地址的主机将以单播 ARP 回复响应请求主机。
交换机将看到进入交换机的任何帧的第 2 层源地址,并将使用源 MAC 地址和帧进入交换机的接口构建其 MAC 地址表。任何具有不在 MAC 地址表中的目标地址的单播帧将被洪泛到所有其他交换机接口。
在您讨论的情况下,第一台主机将广播 ARP 请求,因此 ARP 请求将发送到同一 VLAN 上的所有主机。同时,交换机会将请求主机的 MAC 地址添加到其 MAC 地址表中。
目标主机将以单播帧响应请求主机。交换机通过查看其 MAC 地址表了解目标主机在哪个接口上,将帧直接发送到目标主机。它还将查看第二台主机的源地址,并将该 MAC 地址和接口添加到其 MAC 地址表中。
然后,原始主机可以使用目标 MAC 地址将其帧发送到目标主机,交换机会将帧直接切换到目标主机,因为它的 MAC 地址表中有 MAC 地址和接口。
最初,源节点将发送一个广播请求以获取所需 IP 地址的 MAC 地址。交换机实现即将到来的数据包是广播,将数据包引导到其他剩余端口。Switch 将为相应的源节点构建表。
所有其他节点都将丢弃该数据包,除了它所在的那个。该节点将使用单播回复来回复其 MAC 地址。
现在,由于该数据包的目的地已经存在于交换机的表中,它将简单地将数据包转发到相应的端口。