【问题标题】:Networks vs Subnetworks网络和子网
【发布时间】:2013-07-31 08:50:02
【问题描述】:

具有 C 类 IP 地址(如 192.168.0.1 和子网掩码 255.255.255.0)的计算机可以与另一台具有 IP 192.168.1.1 和相同子网掩码 255.255.255.0 的计算机通信和共享资源吗?我问这个是因为在这种情况下,前 3 个八位字节告诉我们这些 IP 运行在不同的网络上(网络 192.168.0.0 和网络 192.168.1.0)。 此外,在这种情况下,“网络”与“子网”(或“子网”)的含义相同吗? 谢谢!

【问题讨论】:

  • 不是一个真正的 StackOverflow 问题。你可能会在serverFault上做得更好

标签: networking ip ip-address ipv4 subnet


【解决方案1】:

要完全了解计算机网络的工作原理,您需要查看 OSI 模型(或在实践中 - TCP/IP 或 DoD 模型。对于您的问题,您需要查看前三层:物理层、数据链路层和网络层.

物理连接不言自明,表示通过某种介质(铜、玻璃、空气)直接连接。

当主机 A 尝试向主机 B 发送数据包时,它首先会查看目标 IP 地址,并根据自己的 IP 配置确定主机 B 是否与主机 A 在同一子网中。这是正如 Eugen Rieck 已经向您解释过的那样:子网掩码位用于屏蔽 IP 地址的位(逻辑与运算)。现在,我们有两种情况:

  1. 主机 A 和 B 在同一个子网中。
  2. 主机 A 和 B 不在同一个子网中。

您应该注意,在网络适配器用于发送和接收帧的第 2 层上,没有 IP 地址(在第 3 层上存在),而是通过使用 MAC 地址完成设备之间的通信。因此,主机只能与其子网中的主机直接通信(第一种情况)。为了发送一个帧,主机 A 需要主机 B 的 MAC 地址。因此主机 A 首先在其 ARP 表中查找映射到主机 B 的 IP 地址的 MAC 地址。如果他找不到它,它会发送广播 ARP 请求,询问子网上所有拥有该特定 IP 的主机。如果他收到响应,它会添加他收到响应的主机的 MAC 地址,并使用该主机的目标 MAC 地址和该主机的 IP 地址构建一个数据包。

如果两台主机不在同一个子网中(第二种情况),数据包将发送到默认网关,该网关负责查找到目的地的路由。这里要说明的关键点是,即使这种情况下的目的 MAC 地址是路由器(默认网关)的 MAC 地址,目的 IP 地址仍然是主机 B 的 IP 地址,如第一种情况。当数据包从路由器流向路由器时,源和目标 MAC 地址会发生变化,因为它们在本地很重要,但源和目标 IP 地址将保持不变。这就是每一层向上层提供服务(可以这么说)的方式,而上层透明地使用它,而无需知道下面发生了什么。

所以你有:

第一种情况。

----------------
L2:
Src MAC: host A
Dst MAC: host B
----------------
L3:
Src IP:  host A
Dst IP:  host B
----------------

第二种情况:

----------------
L2:
Src MAC: host A
Dst MAC: router
----------------
L3:
Src IP:  host A
Dst IP:  host B
----------------

总结一下(@Eugen Rieck 已经给了你答案):

与您的示例不在同一子网中的两台主机(192.168.0.1/24 和 192.168.1.1/24)将无法在第 2 层通信,并且需要支持 L3 的设备(例如路由器)充当默认网关并在两个网络(广播域)之间路由流量以实现第 3 层连接。

【讨论】:

  • 谢谢!现在我不明白如果我们想让不同子网中的两台计算机相互通信,为什么需要路由器。我也了解如何计算子网 ID。但是我们如何计算主机ID呢?我们如何从 IP 地址中仅获取为主机 ID 设置的那些位?或者这不是必需的,因为主机是通过使用整个 IP 地址来识别的? (例如,子网 ID 为 192.168.0.0,主机 ID 为 192.168.0.1 或者主机 ID 为“1”,子网 ID 为 192.168.0 ?)。
  • 主机将是 192.168.0.1,而不仅仅是 1。由于主机只是一个 IP 地址,您也可以将其表示为子网掩码为 255.255.255.255 的子网。由于掩码的二进制值是所有子网将只有一个 IP 地址(主机 IP)而不是范围。所以它们实际上是以相同的方式计算的。
【解决方案2】:

是与否:

是的:如果两台计算机之间有(正确设置的)路由器并且双方都知道,那么这两台计算机可以通信。

否:如果简单地连接到同一个哑开关,这两台计算机就无法通信。

经验法则:IP & SNM 必须相同,所有参与者才能进行直接交流。

【讨论】:

  • 所以它们在不同的网络上,只有一个路由器才能让它们通信。它怎么能做到这一点?只需将 DHCP 范围设置为类似 192.168.0.1-192.168.1.255 ?
  • 我很确定,您有一个家用路由器 - 这很可能不允许这样做。最简单的方法可能是向其中一台计算机添加辅助 IP 地址,例如将 192.168.1.2 添加到具有 192.168.0.1 的计算机。这对于所有常见的操作系统都很容易。
  • 这不是我的意思。我只是想学习和理解有关网络的某些方面。这是一个我不明白的实际例子。主要问题是:网络和子网是什么?为什么我们需要不同的“网络”?例如,C 类允许 2,097,152 个网络!!
  • networksubnet 的定义在语言上通常没有很好的区分。它实际上是一个层次结构:network 通常用作域边界:Google 的网络您的网络,可能包含多个子网:在您的示例中,您的 network 由两个 subnets 组成: 192.168.0.* 和 192.168.1.* 。您网络的子网由路由器连接,并通过路由器(边缘路由器)再次连接到其他网络(例如互联网)
  • 只有在(按位)IP & SNM 相同的情况下,它们才能直接(即不使用路由器)进行通信,对于 192.168.0.1 和 192.168.0.2 也是如此。如果你想跨越子网边界,你需要一个路由器。
【解决方案3】:

您需要将子网掩码更改为255.255.254.0,或使用路由器或三层交换机进行通信。

Network 通常指您所指的整个网络,而subnet 指的是其中特定的单独部分。但是,术语很松散。

【讨论】:

  • 所以如果我使用 255.255.255.0 掩码,他们将无法通信!我认为通过使用您所说的 255.255.254.0 掩码,我为主机提供了额外的位,并从网络 ID 中删除了位。我还是不明白。我们在这里谈论什么?不同的“网络”还是不同的“子网”?
  • 你是对的:缩短子网掩码有效地将主机地址大小增加一位。您的网络中现在只有一个子网,而不是网络中的两个子网(192.168.0.0 和 192.168.1.0),但大小大约是原来的两倍。与其在这里进行离题讨论,不如查看this tutorial,然后在serverFault 上发布任何其他问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 2016-09-05
  • 2011-09-15
  • 1970-01-01
  • 2021-11-09
  • 2016-05-17
相关资源
最近更新 更多