为什么不能通过交叉电缆相互连接的两台主机(在两个不同的逻辑网络中)通信?

网络工程 以太网 第一层 第3层 数据包追踪器
2021-07-29 07:08:01

让我们说,我有两台计算机(主机)AB其中,A分配的 IP 地址为 192.168.1.10/24,主机B分配的 IP 地址为 192.168.2.11/24。它们都通过以太网交叉电缆相互连接。

现在我看到两台计算机无法相互通信!任何一方 Ping 都失败。我正在使用 Cisco Packet Tracer 对此进行模拟。

有人可以解释为什么这里有问题吗?为什么两台主机不能在这里通信?


为了让问题更清晰,我添加了可视化。

在此处输入图片说明

主机A和主机B的默认网关地址分别设置为192.168.1.1和192.168.2.1


PS:在看到很多社区成员的回答后,我想明确表示 - 我知道在两台主机之间放置一个路由器会使其工作。但是,我正在寻找具有上述拓扑结构的网络系统无法工作的技术原因!我正在查看在此场景中为主机AB之间的通信触发的所有协议是什么以及哪个协议会失败以及出于什么原因。

4个回答

主机知道目标地址是否在不同的网络上(与您所做的方式相同,通过使用主机掩码屏蔽主机和目标地址)。如果目的地在同一网络上,那么它将在第 2 层帧中将第 3 层数据包直接发送到目的地,否则它将在第 2 层帧中将第 3 层数据包直接发送到其路由器。路由器用于在网络之间路由数据包。一个网络上的主机要到达另一个网络上的主机需要一个路由器来在网络之间路由数据包。

路由器将查看目标第 3 层地址,并查看其路由表以查看它是否有通往目标网络的路径。如果没有,它会丢弃数据包,否则,它将数据包从接口转发到目的地。

好吧,找出这个拓扑的问题 - 为什么是问题的一部分。

当主机A识别出目标 IP 地址 192.168.2.2/24 在不同的网络中时(因为它自己的(源)IP 地址是 192.168.1.2/24)。它决定通过默认网关 (DG) 发送数据。主机A已静态配置为在 192.168.1.1 处访问 DG(即使它实际上并不存在)。现在主机A尝试通过发送 ARP 请求(转发以太网帧)来查找 DG 的 MAC。由于没有 DG,也就不会有 ARP 回复。因此,主机A甚至无法采取将数据转发到 DG 的第一步,因此在这种情况下,主机A根本无法访问主机B。

两台主机是否在同一个第 2 层网段(通过交换机或直接链接)并不重要——如果它们在不同的第 3 层子网中,它们需要一个路由器来相互通信。

当 A (192.168.1.1/24) 想要向 B (192.168.2.1/24) 发送数据包时,它首先必须找出必须使用哪个接口,以及是否需要路由器(以及哪个)。

为此,A 尝试在其本地路由表中查找目标 IP 地址:

192.168.1.0/24 -> 192.168.1.1

如果存在默认网关条目(例如0.0.0.0/0 -> 192.168.1.254),该条目将最终匹配任何目标地址。但没有。

A 找不到任何到达目的地的路由,除了丢弃数据包别无选择。no route to host向应用程序返回一个错误,就是这样。

只有当它们在同一个子网中时,它们才会尝试使用它们的公共 L2 网段相互通信。换句话说:A 和 B不知道它们有一个公共链接,因为它们的 L3 子网告诉它们不同。

除非你诱使他们认为他们实际上没有使用路由器,或者你减少网络掩码大小以将它们放入同一个子网,否则他们需要有一个连接到每个子网的路由器。

有很多方法可以完成这项工作。这是一个列表,并有一个简短的解释。

  • 展开双方的网络掩码。这将允许另一台主机在本地网络中,并且不需要通过默认网关进行路由。 这是最简单也是最小的变化。
  • 将一台主机移至与另一台相同的 IP 网络。这意味着更改 .1。.2 的主机。反之亦然。这里的缺点是主机会更改可能不适合您的 IP。
  • 您可以向每个主机添加第二个 NIC,连接它们,并提供不相关的新 IP 地址。IE host1 可能有 192.168.234.1/29,host2 可能有 192.168.234.2/29 在这个新网络上没有设置默认网关,所以它只会路由 IP 网络范围内的 IP。
  • 两个设备的默认网关上的代理 ARP 可能会解决这个问题,但这是一个糟糕的解决方案,不推荐。这将允许作为 192.168.1.0/24 和 192.168.2.0/24 的默​​认网关的任何设备“撒谎”并向 ARP 请求提供自己的 MAC 地址。假设两个网络都有一个默认的 GW 及其相同的设备。不是很推荐。

IPv6 对您没有帮助 - 它会遭受与 IPv4 停止工作相同的条件,除非网络与上述更改之一匹配。

我错过了任何其他“修复”吗?随意发表评论。