为什么子网掩码与网络上的单个计算机相关?

为什么子网掩码与网络上的单个计算机相关?

我了解如何使用子网掩码将网络划分为子网,但是,为什么网络中的每台计算机都需要知道子网掩码,而不仅仅是路由器?

如果每台计算机都通过电线物理连接在一起,我可以理解,但无论如何所有数据包都需要通过路由器。

假设我在网络上有一台计算机192.168.0.0/255.255.255.0,其 IP 为192.168.0.1

如果该计算机试图访问子网外的计算机,192.168.1.1它会将消息传输到路由器,路由器会识别出该 IP 位于子网 IP 范围之外,并且不是在子网上传输,而是将其传输到它所连接的网络(可能是另一个路由器)。

答案1

你最初的假设并不完全正确。你所谓的“路由器”其实是两个设备合二为一——一个双端口路由器内部连接到一个多端口以太网交换机. (以下是示例图表

这意味着计算机直接在第 2 层连接,并可以相互发送数据包没有经过路由器核心——它们只是通过交换机芯片在端口之间进行中继。(路由器在交换机中有自己的“端口”。)

因此,如果您使用 Wireshark 查看数据包,您会发现它们直接使用彼此的 MAC 地址,而“外部”数据包始终以路由器的 MAC 作为目的地。

(我假设你指的是大多数家庭中常见的“无线路由器”,这也是这类问题通常出现的原因。一个更大的网络应该有一个分离每个子网一个端口的路由器,以及几个独立的交换机(可能是一个主交换机加上每个楼层/房间一个交换机),以及几十台连接到这些交换机的计算机。)

它与 Wi-Fi 网络大致相同,只是“交换机”被替换为“无线桥接器”(又称“接入点”)。在这两种情况下,连接的计算机都可以在第 2 层直接向彼此发送数据包,没有通过路由器。


评论:

当我说路由器时,我实际上指的是交换机。我的错误。我的观点是,子网中的每台计算机并不是相互连接的,而是连接到交换机,然后交换机可以将数据包传递到正确的目的地。以太网帧不包含子网掩码,因为交换机已经知道这个信息,因此不需要它来进行正确的交换。

这又错了。交换机没有这方面的知识;它们的交换核心在第 2 层工作,不知道任何事物关于 IP – 它纯粹根据“目标 MAC 地址”字段转发以太网帧。

因此,主机需要子网掩码来确定要使用哪个 MAC 地址作为目的地:

  • 如果对等体位于同一子网内,则假定链接上根据定义 – 因此以太网帧将以对等方的 MAC 作为目的地。

  • 对于同龄人外部子网,以太网帧将具有网关的MAC 作为目的地。

(这适用于默认配置。一些特殊雪花网络会改变这一点 - 例如,大多数操作系统允许为其他子网添加额外的“在线”路由;相反,一些交换机可能配置了欺骗 ARP 响应,这样即使“在线”流量也被强制通过网关。)

答案2

计算机如何知道目标地址是否位于同一子网或另一个子网中?

检查本地地址子网掩码

我们来看几个例子:

如果我的计算机有 IP192.168.0.1并且掩码是,255.0.0.0则意味着从192.0.0.0到的任何地址192.255.255.255都位于同一子网中。发往所有其他计算机的数据包无需通过路由器,可以直接发送。发送 ARP 数据包以获取目标计算机的 MAC 地址,然后发送数据包。

但是,如果我的计算机有 IP192.168.0.1并且掩码为,255.255.255.128则同一子网中的计算机仅从 IP 地址192.168.0.0192.168.0.127。它们可以直接访问(发送 ARP、查找 MAC 地址等)。例如,任何其他地址都192.168.0.200必须通过路由器才能到达。

答案3

关于 IP 的一个不太明显的是,每个 IP 设备本身就是一个路由器

在普通 PC 上使用“route print”命令即可看到。您连接到两个网络:本地以太网或 wifi 网段和本地主机网络。每个数据包都需要决定将其放在哪个网络上。

如果你将计算机放在两个网络上,比如“公共”网络和“私有”网络,这一点会更加明显。现在你肯定需要子网掩码来决定将数据包发送到哪个网络。

许多人会意外地发现,具有单个网络连接的 PC 可以使用错误配置的子掩码:他们最终将所有内容发送到网关。

答案4

TCP/IP 可以按照您的建议进行设计——叶节点会将所有内容发送到路由器,然后路由器会将其转发到目标,目标可能与发送方位于同一子网。

但这并不是最佳设计,原因有二:

  1. 它占用更多带宽:同一子网上的设备之间的每个数据包都必须传输两次:一次从发送方传输到路由器,另一次从路由器传输到接收方。在路由器也是网络交换机的网络上,这实际上并不会占用任何额外的带宽,因为它无论如何都会经过交换机。但并非所有网络技术都是这样工作的。最初的以太网设计是一种总线技术,没有中央交换机或中继器。

  2. 这会给路由器带来更多负载。即使路由器也是交换机,工作量也会更大,因为它必须执行第 3 层路由实现,而不是更简单的第 2 层交换。

TCP/IP 的设计理念是,终端节点是智能设备,因此它们被认为能够完成部分工作。它们不必像骨干路由器那样了解整个网络拓扑,但它们对本地环境有足够的了解,可以承担一些初始的本地与远程路由任务。实现这种简单的初始路由不需要太多代码。

此外,非路由器设备不一定只在一个子网上。一台 PC 上可以很容易地安装多个网卡——许多 PC 都同时具有以太网和 WiFi。每个网卡都可以连接到不同的子网,地址和子网掩码用于确定使用哪个网卡。如果您运行虚拟机,则可能有一个虚拟子网将它们连接到主机系统。

相关内容