我的理解是网络掩码界面的说明了什么子网该接口属于.该信息的含义是路由系统知道发送至该子网的数据包应路由至该接口。特别是,Linux 在配置地址时会自动添加此路由:
# ip address add 1.1.1.1/24 dev eth0
# ip route
1.1.1.0/24 dev eth0 proto kernel scope link src 1.1.1.1
此外,子网定义广播地址,以便主机知道如何发送广播数据包以及何时接受地址末尾带有多个1的数据包。
网络掩码还有其他含义吗?即,如果我手动删除自动创建的路由,并且该接口从不发送广播并且对广播接收不感兴趣 - 与 /32 网络掩码的地址会有什么区别吗?
答案1
首先,Linux 上的主网络接口不能配置为 /32。
从主机的角度来看,网络掩码定义了范围主机所在的子网。
通过它,主机知道何时直接或通过默认网关将数据包发送到另一台主机。
该接口需要发送和接收广播,因为没有它ARP无法工作,因此无法使用网络。
答案2
我的理解是接口的网络掩码告诉接口属于哪个子网。
上面写的可以解释为“网络掩码是任意应用于接口的东西,以便它可以自由选择与哪个网络通信”,这不是。
网络地址(例如10.0.7.0)和网络掩码(例如255.255.255.0,即前缀表示法中的/24)标识子网(此处为10.0.7.0/24)。必须使用属于接口所连接的子网的唯一 IP 地址正确配置接口(例如 eth0)(例如,我们可能选择 10.0.7.42);此外,需要将接口的网络掩码指定为与子网网络掩码相同。
/32 网络掩码不存在,因为它没有任何意义。使用的最大网络掩码是 /30,它允许两个有效主机,并且仅用于点对点连接。