手动计算子网掩码的IP范围

已知条件

  • IP: 192.168.251.31
  • 掩码: 255.255.252.0

计算思路

  1. 掩码是 255.255.252.0,通过二进制转换为11111111.11111111.11111100.00000000,连续1表示网络位,连续0表示主机位,所以第三段第六位往后是主机位,往前(包括第六位)都是网络位

  2. IP 192.168.251.31/22 通过二进制转换为: xxxxxxxx.xxxxxxxx.11111011.xxxxxxxx(这个例子只需要关注第三段)

  3. 将 IP 中所有主机位修改,分别改为 0 和 1

  • 后边都置 0, 就是 IP 段起始, xxxxxxxx.xxxxxxxx.111110|00.00000000
  • 后边都置 1, 就是 IP 段结尾, xxxxxxxx.xxxxxxxx.111110|11.11111111
  1. 分别将起始和结束IP和子网掩码进行与运算,得到:11111000.00000000 = 248.011111011 = 251.255

  2. 得到 IP 段范围为:192.168.248.0 ~ 192.168.251.255

image


有个疑问,会不会出现 255.255.253.0 这种掩码

  • 首先答案,掩码没有规定必须由连续的1组成,但是现实中肯定是没有这么用的。
    因为非连续的对人们规划和使用非常的不友好,无法区分掩码位数,也无法确定网络位和主机位的划分
    那么理论上能不能有,分析一下

  • 假设存在,那么这个掩码转为二进制的写法为 11111111.11111111.11111101.00000000
    通常情况我们以连续1作为网络位,连续0作为主机位,示例掩码就无法直接区分了
    也无法用常规的/22这种表示

  • 掩码掩码,我理解是把网络位遮住,只识别主机位,那么
    前24位中,第23位为主机位,其他位网络位
    这样该掩码对应的可用网段就分成了两部分,即 192.168.253.0~192.168.253.255192.168.255.0~192.168.255.255
    不利于规划,还造成了 ip 浪费

  • 我们假设它可以成立,那么有没有问题,以192.168.255.0.0~192.168.255.255这个网段为例
    假设两个掩码中(255.255.255.0255.255.253.0)有相同IP(192.168.255.10),此时有一个IP(192.168.255.20)请求与它通信,由于dest_ip和本段掩码做与运算的结果,和本网络号相同,那么会发送广播,两个 ip 会发生争抢导致数据包异常
    网络不能正常使用,肯定是由问题的,那么,结论“不能这么用”,大功告成!


参考链接

posted @   难德糊涂  阅读(75)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示