连接两个不同网络的问题

连接两个不同网络的问题

我有两个网络:192.168.13.0/24(蓝色)和 192.168.15.0/24(绿色)。
计算机 A 仅连接到 13 网络。计算机 B 有两个接口,每个网络一个。
第三台计算机充当路由器,将 13 网络连接到 15 网络(仅在此方向)。

替代文本

现在,我想ping 192.168.15.100从计算机 A 到 B。不幸的是,从来没有回复。但是当我使用集线器而不是交换机时,它就可以工作了。

我认为 ping 数据包通过交换机传输到路由器(这是 A 的默认路由/网关)。路由器将数据包发送回交换机到 B。B 可能在其 15 个网络接口上接收数据包,但用其第 15 个接口进行应答?这可能吗?
问题是,B 可能只有一个网关 192.168.13.50 - 但我对此不太确定(B 是一个嵌入式系统,配置可能性有限)。

有人能解释一下这里发生了什么吗?谢谢!

答案1

在这两种情况下,ping 都以arp请求获取路由器的 MAC 地址开始。然后 ping 消息被包装在第二层数据包中,以路由器为目的地。

当您使用时会发生什么hub

  • ping 消息被广播到所有客户端(B x 2 和路由器),
  • B.13.100 接口丢弃数据包,
  • 但是它的 15.100 接口获取到了它,可能处于混杂模式(忽略了 MAC 目标),
  • 因此 B 通过其 13.100 接口直接回复 A。

用一个switch

  • B 不直接获取数据包。交换机知道A 数据包被直接发送到路由器(由于其目标 MAC 地址)并且不涉及其他端口。
  • 路由器通常会在其 13.50 接口上获取数据包,
  • 并应通过其 15.50 接口将其转发至 B。
  • B 应该在其 15.100 接口上获取它,并从其 13.100 接口回复
  • A 应该直接得到它,但是没有。

路由器可能出了问题。使用交换机
尝试从 A 发出命令。traceroute

答案2

你可能看到的是这样的:

  1. 数据包从 A 接口出去(13.10)
  2. 通过路由器路由到 B(通过路由器到 15.100)
  3. 被 B 接收(15.100)
  4. B 回复说“哦,嘿,我在同一个网络上!”
  5. 数据包从 B 接口出去(13.100
  6. 被 A 接收(13.10)
  7. 我说我没有想到会有 13.100 丢包

您可以通过在发送 ping 时在 A 和 B 上运行数据包跟踪来确认这一点,查看标头并检查源地址和目标地址。

解决这个问题的唯一真正方法是在主机 B 上添加 /32 路由条目,以强制数据包出 15.100,但这种方法扩展性不佳。

答案3

a) 从计算机 A 到计算机 B 执行 a 操作tracert,应该会显示其所采用的跳数
b) 计算机 B 上设置的默认网关是什么?
c) 它是什么类型的交换机? 第 2 层,还是第 3 层?
d) 您是否可以尝试完全禁用计算机 B 上的 13.100 NIC,然后重新启动该机器并 ping 它以查看是否有效?

相关内容