我刚开始学习网络,在 YouTube 教程中有一个问题,答案不是免费的。因此有这些网络:
网络A:
- IP:172.16.0.0/24
- 设备:一个 IP 为 172.16.0.4,另一个 IP 为 172.16.0.1
网络B:
- IP:172.16.1.0/24
- 设备:一个 IP 为 172.16.1.1,另一个 IP 为 172.16.1.7
网络C:
- IP:172.16.2.0/30
- 设备:一个 IP 为 172.16.2.1,另一个 IP 为 172.16.2.20
设置如下:(N 代表网络)NA => 路由器 => NC => 路由器 => NB
问题是:NA 中的设备无法与 NB 中的设备通信。为什么它们无法通信?
我对这个问题的回答是:网络 A 的 IP 为 172.16.0.0/24。它不能使用这个 IP,因为它和 172.16.255.0/24 一样都是广播 IP。我非常怀疑我的判断是否正确,所以我希望有人能帮助我。我在谷歌上搜索了一下,没有找到任何东西。我想我不知道该怎么问。提前谢谢。
答案1
xx0.x/24 是有效的网络 IP 地址吗?
是的,这是一个有效的网络地址。
它不能使用这个 ip [172.16.0.0/24],因为它和 172.16.255.0/24 一样都是广播 ip
不,这完全是错误的。
IP 地址是从左到右读取的 - 如果是 /24 网络,则前 24 位是“网络”部分,最后的8 位是“主机”部分。只有当地址满足以下条件时,该地址才成为子网“广播”地址:主持人位(即最右边物理位(即所有位)都是 1,而网络位则完全不相关。
(例如,x.y.z.255/24
或x.y.255.255/16
将是广播地址,但x.y.7.255/16
将不是是广播地址。
但在您的帖子中,地址中间只有一个“255”(在网络部分的末尾),这本身没有任何意义——它只是一个完全普通的网络 ID 的一小部分。整个网络前缀,,172.16.255/24
作为一个数字。
(只有在您使用仍然使用 20 世纪 80 年代的有类路由的非常旧的路由器时,它才会变得有点重要,其中“172.16”仍然是 B 类前缀,“255”是“子网 ID”。即使在那时,子网 ID 255 也不意味着“广播”,只有主机 ID 才意味着。)
那么:
NA 中的设备无法与 NB 中的设备通信。为什么它们无法通信?
通常最简单的原因之一:
a) 他们彼此之间缺少路线。
b) 路由器的防火墙/ACL 规则不允许这种情况。
手动执行每个步骤(设备 A、路由器 NA-NC、路由器 NC-NB、设备 B,然后在另一个方向重复)并查看设备的路由表。请记住,路由不是自动对称的;每一侧都需要自己的到另一侧的路由。
- 设备 A 使用什么网关到达设备 B?
- 路由器 NA-NC 使用什么网关到达设备 B?
- 设备 B 使用什么网关到达设备 A?
- 路由器 NB-NC 使用什么网关到达设备 A?
使用数据包捕获工具(例如 Wireshark 或 tcpdump)查看数据包开始消失的位置。
答案2
网络 A 不直接连接到网络 B - 这意味着它可能不知道如何到达那里。网络 A 所连接的路由器是其网关 - 这意味着任何未绑定到网络 A 的数据包都会转发到该路由器,并且它需要弄清楚如何处理它。此路由器桥接网络 A 和网络 C,因此它知道将数据包发送到任一子网的位置 - 它将有一个路由告诉它该做什么,并且它可能有一个默认路由来将未绑定到网络 A 或网络 C 的数据包发送到哪里 - 但是网络 B 有一个不同的路由器/网关,因此除非它有一条路由告诉它使用第二个路由器/网关转发绑定到网络 B 的地址的数据包,否则它将不知道将数据包发送到哪里,并且它将通过默认路由。假设默认路由是 Internet 或其他网络段,它可能不会在任何时候指向网络 B,因此永远不会成功。