不同子网的两台主机,A - 10.1.2.1/24 和B - 10.1.3.1/24 连接到同一个交换机S,它们可以通信吗?
据我了解:
- A发送一个IP为B的数据包
- S 接收它并将其与存储地址表中的值进行比较,否则广播它。
- B收到数据包,检查IP并接受它。
我对吗?
不同子网的两台主机,A - 10.1.2.1/24 和B - 10.1.3.1/24 连接到同一个交换机S,它们可以通信吗?
据我了解:
我对吗?
不幸的是,不,你错了。
Ron 提出了一个很好的观点,您没有提供子网掩码,所以如果我们假设有类掩码,则 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,它不在主机 A 自己网络内的 IP 地址范围内。如此一来,Host A 会得出目的 IP 10.1.3.1 位于外网的结论,Host A 只能通过 Router 与外网通话。或者更具体地说,通过 HostA 的默认网关。
如果此时没有为 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 中的所有端口溢出。
是的。如果它们在 /16 子网下。对于 /24 子网,您需要路由器。
如果主机 A 和 B 位于不同的网络或子网并连接到同一个交换机,我相信它们可以通过默认网关进行通信。
仅当交换机连接到知道如何在这两个子网之间路由的路由器时。