什么是子网掩码?(用于在路由器和主机上)

这是一篇面向刚开始学习 IP 寻址、路由和子网划分基础的网络新手的文案。

无线路由器-网关-dtu
图片

在TCP/IP 网络中的每个主机或设备都必须分配一个 IP 地址,从而方便与其他设备进行通信。而IP 地址通常由网络部分和主机部分组成。如果将网络部分视为建筑物地址编号,那主机部分则可视为该建筑物内的房间编号。

例如大楼地址“XYZ 大楼”是网络 IP 地址部分,“房间号 2”是主机地址部分;又如标识单个主机的 IP 地址10.0.0.2包含网络部分10.0.0和主机部分2。

现在,网络上的设备如何知道哪一部分是网络部分,哪一部分是它们分配的IP地址的主机部分?

他们使用“子网掩码”知道这些信息。TCP/IP网络上的每个主机都配置有一个IP地址和一个子网掩码。

子网掩码是标识分配给主机的IP地址的网络部分的掩码。

对于上面的示例,IP为10.0.0.2的主机也被分配了一个子网掩码 255.255.255.0。如果你在IP地址和子网掩码之间进行逻辑与运算,你将找到该地址的网络部分:

10.0.0.2 AND 255.255.255.0 = 10.0.0.0(网络部分是10.0.0 其余部分是主机部分。即2)。

无线路由器-网关-dtu
图片

从上图中可以看出,Host A和 Host B属于同一个本地子网(10.0.0.0/24),通过一个路由器接口连接到同一个交换机。路由器接口还有一个IP地址10.0.0.254,与两个主机具有相同的子网掩码255.255.255.0。

此外,另外两台主机(主机C、主机D)与地址为10.1.1.254的路由器的第二个接口一起属于另一个子网(10.1.1.0/24)。

每个主机还分配了一个默认网关(除了IP地址和子网掩码)。主机A和B必须配置路由器接口的默认网关地址,即10.0.0.254。同样,主机C和D必须配置其路由器的默认网关地址,即10.1.1.254。

主机如何使用子网掩码

当一台主机想要与另一台主机通信时,它使用其子网掩码将其本地网络IP地址的网络部分与要发送的数据包的目标网络地址进行比较。

在终端系统可以将数据包发送到其目的地之前,它必须首先确定目的地地址是否在本地网络上。

这是通过将目标地址中的网络位与其自身IP地址的网络位进行比较来完成的。例如,如果主机A想要向主机B发送数据包,它将获取目标地址10.0.0.2(主机B)并使用其子网掩码执行 AND 操作。

结果将是10.0.0.0,它将告诉主机A目标地址与它自己属于同一个子网。

因此它不会将数据包发送到默认网关(路由器)。相反,主机A将执行 ARP 请求(地址解析协议)以找出主机B的目标MAC地址(ARP协议将IP地址映射到MAC地址)。因此,Host A会直接通过交换机将数据包发送给Host B,而无需经过路由器。

现在,如果主机A想要向主机C发送数据包,它将获取主机C的目标地址10.1.1.1并与其子网掩码执行 AND 操作。

结果将是:

10.1.1.1 AND 255.255.255.0 = 10.1.1.0

这将告诉主机A目标地址的网络部分与其自身 (10.1.1) 不同。

因此,主机A必须将数据包发送到其默认网关(路由器地址10.0.0.254)才能到达路由器另一端的主机C。

路由器将检查 IP 数据包中的目标 IP 地址,并将流量转发到正确的接口(根据其路由表)。