为什么操作系统需要知道子网掩码?

为什么操作系统需要知道子网掩码?

如果我理解正确的话,操作系统从 DHCP 服务器获取子网掩码以及 IP 和其他信息。这个子网掩码似乎对路由器很重要,因为它知道数据包是来自/发往 LAN 还是应该发送到其他地方,或者是从 Internet 接收的。但是为什么操作系统需要子网掩码呢?操作系统利用子网掩码做什么?

答案1

网络配置有 3 个主要组件:

  • IP地址
  • 网络掩码
  • 默认网关

操作系统需要知道网络掩码才能确定数据需要传输到哪里。您的 IP 地址与网络掩码相结合,可以告诉操作系统目标 IP 地址是否存在于本地子网中,或者是否存在于子网之外。有些计算机有多个网络连接,无论是物理连接(多 NIC)还是逻辑连接(例如 VPN)。如果每个网络都没有子网掩码,操作系统就无法确定哪些流量应该离开哪个接口。

如果目标存在于您的子网内:

  • 您的操作系统通过参考其 ARP 表来确定目标的硬件地址。如果 ARP 表中没有该地址的条目,系统将发出硬件广播,该广播将淹没到第 2 层网络上的所有设备。拥有 IP 地址的系统将使用其硬件地址 (MAC ADDR) 响应广播。然后操作系统将发送数据,数据永远不会离开本地网络。

如果目标不存在于您的子网中:

  • 您的操作系统会根据其路由表确定将数据包发送到何处。大多数情况下,数据包将被发送到默认网关。此网关通常是路由器,它将使用自己的路由表将数据包发送到最终目的地。发送到默认网关的过程与发送到子网上的另一台主机的过程相同。如果网关的 MAC 地址不在 ARP 表中,它将发送广播以确定网关的硬件地址,然后转发帧。

所以正如您所看到的,子网掩码非常重要,因为它用于确定目标网络的位置,并相应地进行路由。

答案2

根据 IP 和子网掩码的组合,操作系统可以确定其用户空间应用程序想要联系的目标 IP 是在其本地网络中还是需要通过某个路由器发送。如果需要通过路由器发送,它会进行路由表查找以确定使用哪个路由器。

答案3

参见 Mauro 的回答,但此外子网掩码还允许主机确定IP广播地址。我认为在当今基于 DNS 的名称解析时代这不再那么重要,但在以前的 Active Directory NETBIOS 名称查找时代,如果子网掩码错误,则可能会由于广播地址错误而失败。

相关内容