两个不同子网的主机,即A-10.1.2.1/24和B-10.1.3.1/24连接到同一交换机S。
它们可以通信吗?

据我了解:


A发送一个IP为B的数据包
S接收并与存储地址表中的值进行比较
将其广播。
/> B收到数据包,检查IP并接受它。

我对吗?

#1 楼

不幸的是,不,您是不正确的。

罗恩指出,您没有提供子网掩码,因此如果我们假设使用有类掩码,则10.xxx地址将具有255.0 .0.0掩码,实际上会将两台主机放在同一网络上。如果是这样的话,他们进行交流就不会有问题。并使用255.255.255.0,它将两台主机都置于两个不同的子网中。

这么说,您缺少的核心在于忘记ARP(地址解析协议)。具体来说,HostA决定向谁进行ARP。让我解释一下...


在任何主机将任何数据包放入网络之前,它要做的第一件事就是确定目标IP是在其自己的网络上还是在外部网络上。让我们从主机A的角度来看一下它。

主机A知道其IP(10.1.2.1)和其子网掩码(/ 24,或255.255.255.0)。通过少许子网划分,HostA可以确定其网络跨越10.1.2.0到10.1.2.255范围内的所有IP地址。 (由于当前它们不相关,我们将省略NetID和BroadcastIP的详细信息)

主机A还知道其目标IP为10.1.3.1,不在IP地址范围之内。主机A自己的网络中的IP地址。这样,主机A将得出以下结论:目标IP 10.1.3.1在外部网络上,并且主机A只能通过通过路由器讲话才能到达外部网络。或更具体地说,是通过HostA的默认网关。 HostA无法与HostB通话。

如果HostA配置有默认网关,它将发出ARP请求(本身就是广播帧),询问其默认网关的MAC地址-而不是最终目标IP的MAC地址。

收到广播帧的交换机会将数据包泛洪到所有接口上,包括一个HostB连接到的接口。 HostB确实会收到该数据包,但是由于ARP正在查找默认网关的MAC地址(而不是HostB的MAC地址),因此HostB会丢弃并忽略ARP请求,而不会发送任何形式的响应。 >
,那么HostA将永远不会收到其默认网关的MAC地址,因此将无法用第2层标头封装第3层数据包。数据包在那里会失败。

您可以看到此视频中说明的ARP进程。 ,我确实想对您说的话说话。这可能是术语上的细微差别,但我只想确保它可以传达。交换机仅做两件事:转发它知道目标MAC地址的帧,或转发它不知道目标MAC地址的帧。交换机从不广播。

广播是目标MAC地址为ffff.ffff.ffff的帧。这是一个专门保留的MAC地址,专门用于广播帧。当交换机遇到发往ffff.ffff.ffff的帧时,其行为是始终淹没该帧。

您可以这样看,因为ffff.ffff.ffff是保留的MAC地址,无法通过开关进行学习。因此,每当交换机收到发往ffff.ffff.ffff的内容时,就会被迫将其淹没最初接收到该帧的VLAN中的所有端口。

评论


该答案在某些情况下...主机可以没有网关,也可以将自己的地址配置为网关地址。这将导致主机对所有地址进行ARP,并且启用到目的地的路由(甚至是默认路由)的启用了代理ARP的路由器将使用自己的mac地址进行回复。

– cpt_fink
2014年11月8日在1:39



几乎所有答案/情况都存在极端情况。我不认为在这里讨论其中的某些内容与该问题有关。

–艾迪
2014年11月16日15:46

#2 楼

是。如果它们在/ 16子网下。对于/ 24子网,您需要路由器。

评论


您可以通过进一步解释来改善答案。例如,解释一下为什么它可以与/ 16一起使用,但是`/ 24需要一个路由器。

–罗恩·莫潘♦
16年7月1日在14:40

#3 楼

如果主机A和B在不同的网络或子网中,并且连接到同一台交换机,我相信它们可以通过默认网关进行通信。

评论


网关地址必须与主机上配置的地址位于同一网络中。由于网关地址是用于从网络发送流量的地址,因此它必须与发送主机位于同一网络中,否则主机将需要网关才能到达网关。

–罗恩·莫潘♦
17-2-10在17:22



#4 楼

仅当交换机连接到知道如何在这两个子网之间路由的路由器时。

评论


第3层交换机不需要单独的路由器

–下文
19年4月24日在18:18