主机是否会接受从未知 MAC 地址广播的第 2 层数据包(不是 ARP),并且其目标 IP 是主机之一?

网络工程 路由
2022-03-02 08:59:13

如果这是肯定的,为什么我们不能将 2 个 LAN 与集线器或交换机连接。让我详细说明一下,我们有子网 A 和子网 B,IP 完全不同,所有主机(B 和 A)都直接连接到一个 HUB/Switch。A 的一个主机决定与 B 上具有已知 IP 的某人交谈。所以他决定发送一个在第 2 层广播的帧,但已经封装了一个 ip 头,其中属于子网 B 的主机的 ip 作为其目的地。数据包最终会到达所需的目的地吗?会被接受吗?显然我知道路由器的存在和使用以及主机如何路由数据包(使用 ARP 和默认网关),上述案例充满了问题,但这不是一个实际的实际问题,只是一个完全理论上的问题最近在我结束了我在大学的网络课程后对我来说。

3个回答

A 的一个主机决定与 B 上具有已知 IP 的某人交谈。所以他决定发送一个在第 2 层广播的帧,但已经封装了一个 ip 头,其中属于子网 B 的主机的 ip 作为其目的地。

网络 A 上的主机向网络 B 上的主机发送数据包,会将数据包封装在一个帧中,该帧发往其配置的网关。源主机屏蔽目标 IP 地址以确定目标是在同一网络上还是在不同网络上。在同一个网络上,它会将数据包封装在一个带有目标主机地址的帧中,但对于不同的网络,它会将数据包封装在一个帧中,以便其配置的网关到达目标网络。

我不确定您所说的未知 MAC 地址是什么意思,因为接收主机在接收帧时并不关心源 MAC 地址。接收广播帧的主机会将帧有效负载转发到第 3 层协议进行检查,而不管源 MAC 地址如何。

为什么我们不能用集线器或交换机连接 2 个局域网。

对于“局域网”,我假设您的意思是单独的 L2 段。

我们有子网 A 和子网 B,IP 完全不同,所有主机(B 和 A)都直接连接到一个 HUB/Switch。

那是一个 L2 段(除非您在交换机上配置了单独的 VLAN)。

A 的一个主机决定与 B 上具有已知 IP 的某人交谈。所以他决定发送一个在第 2 层广播的帧,但已经封装了一个 ip 头,其中属于子网 B 的主机的 ip 作为其目的地。数据包最终会到达所需的目的地吗?

结束,是的。广播在整个 L2 段中转发,由预期的 NIC(和所有其他 NIC)接收,不会被丢弃(因为它是广播)并传递到本地 IP 堆栈。由于这种情况没有很好地定义,本地堆栈可能决定忽略封装的数据包,或者它可能决定正常处理它。这取决于它的实施。

如果您真的是指两个L2 段,那么不,该帧将被网关丢弃。网关不转发来自广播帧的数据包。

A 的一个主机决定与 B 上具有已知 IP 的某人交谈。所以他决定发送一个在二层广播的帧,但是封装了一个 ip 头,以属于子网 B 的主机的 ip 作为其目的地

这不是 TCP/IP 主机的正常操作。我想如果你真的想的话,你可以对你的计算机进行编程来做到这一点。

当(正常)主机接收到第 2 层帧时,它会检查目标地址是否与自己的地址或广播地址匹配。如果是这样,则将数据传递到下一层。

类似的过程发生在 IP 层。如果目标地址匹配,则将数据包通过 ip 传递到下一层。