具有 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)。此外,在这种情况下,“网络”与“子网”(或“子网”)的含义相同吗?谢谢!
3 回答
要充分了解计算机网络的工作原理,您需要查看 OSI 模型(或在实践中 - TCP/IP 或 DoD 模型。对于您的问题,您需要查看前三层:物理层、数据链路层和网络层。
物理连接是不言自明的,表示通过某种介质(铜、玻璃、空气)的直接连接。
当主机 A 尝试向主机 B 发送数据包时,它首先会查看目标 IP 地址,并根据自己的 IP 配置确定主机 B 是否与主机 A 在同一子网中。这是作为 Eugen 完成的Rieck 已经向您解释过:子网掩码位用于屏蔽 IP 地址的位(逻辑与运算)。现在,我们有两种情况:
- 主机 A 和 B 在同一个子网中。
- 主机 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 层连接。
是和否:
是的:如果两者之间有(正确设置的)路由器并且双方都知道,那么这两台计算机可以通信。
否:如果简单地连接到同一个哑交换机,这两台计算机就无法通信。
经验法则:IP & SNM
所有参与者必须相同才能允许直接通信。
您需要将子网掩码更改为255.255.254.0
,或使用路由器或第 3 层交换机进行通信。
Network
通常是指您所指的整个网络,而subnet
指的是其中特定的单独部分。但是,术语非常松散。