不同子网的两台主机,设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 是在自己的网络上,还是在外部网络上。我们从Host 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 地址范围之外。因此,主机 A 会得出结论,目标 IP 10.1.3.1 位于外部网络上,而主机 A 只能通过路由器通话才能到达外部网络。或者更具体地说,通过 HostA 的默认网关。
如果此时 HostA 未配置默认网关,则过程在此处以一般故障结束。HostA 无法与 HostB 通话。
如果主机A在配置了默认网关,它会发出一个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 位于不同的网络或子网并连接到同一交换机,我相信它们可以通过默认网关进行通信。
仅当交换机连接到知道如何在这 2 个子网之间进行路由的路由器时。