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

scd*_*dmb 3 networking ip subnet

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

rep*_*lay 9

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


Dav*_*ude 3

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

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

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

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

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

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

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

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