写给网工新手:子网掩码基本概念和一些计算方法

前言

子网掩码是非常基础且重要的网络概念,尤其是在各种网络考试中..

但实际上,在考网工之前,我对它也是不怎么了解的!虽然我曾做过十几年的网吧维护..

子网掩码的作用

简单讲,它就是用来划分网络的。

哪些IP在同一网段,数据可以直接二层转发;哪些IP不在一个网段,需要通过路由转发。。

举个例子:如果我问192.168.1.1和192.168.1.100这两个IP是否在一个网段?

可能很多人会觉得,它们前三段都一样当然在一个网段!

然而并不是,因为这里没有给出子网掩码。

如果子网是255.255.255.0,那它们当然在一个网段,但如果子网是255.255.255.192,那它们就不在一个网段了。可见,判断两个IP是否在一个网段是由子网掩码决定的。

子网掩码的规范

一、子网掩码是一个32位的二进制数,每8位以点分隔

就像这样:11111111.11111111.11111111.00000000

转换成十进制就成了:255.255.255.0

二、子网掩码从左到右,都是连续不断的1,中间不能有0。或者说1前面不能有0

举几个例子:

|-------------------------------------|---------------|
| 11111111.11111111.11111111.00000000 | 正确。从左到右连续不断的1 |
| 01111111.11111111.11111111.00000000 | 错误。1前面不能有0 |
| 11101111.11111111.11111111.00000000 | 错误。中间不能有0 |
| 11111111.11111111.11111111.00000001 | 错误。中间不能有0 |

正因这样的规范,在考试或者网络设备的配置中,常常会看到子网不是写成4组点分的形式,而是写成如24这样的一个整数,这个24就代表子网掩码写成二进制时,前面有多少个1。

所以24位子网写成二进制就是:11111111.11111111.11111111.00000000

三、子网划分遵循最小分配原则

什么意思呢?比如说,一个网络如果50个IP就够用,那么应该使用能够满足,又最接近的子网,那么就是26位子网(也就是255.255.255.192 最大62个可用IP),而不是24位这样更大的子网。

但是注意:这是针对考试等场景。对于现实应用而言,这不是什么必须遵守的规则!

比如家里就几个设备,一般的小公司也只有几台、几十台设备,但大家都习惯性的使用24位的子网!

子网掩码的一些计算

一、一个子网有多少个可用IP?

子网1的部分代表网络位,0的部分代表主机位。主机位也就是IP范围的部分

以24位掩码举个例子:11111111.11111111.11111111.00000000

其中0部分是8位,那么最小值:00000000,最大值是:11111111

写成十进制就是:0-255 总共256个数字,也就代表最大256个IP。

其中第1个IP(0)是网络地址,最后一个IP(255)是广播地址

因此,实际可用IP:256 - 2 = 254

二、子网聚合的计算方法

这在网工考试中是必考的。

举个例子:

|-------------|-------------------------------------|
| IP(十进制) | IP(二进制) |
| 192.168.1.0 | 11000000.10101000.00000001.00000000 |
| 192.168.2.0 | 11000000.10101000.00000010.00000000 |
| 192.168.3.0 | 11000000.10101000.00000011.00000000 |
| 192.168.4.0 | 11000000.10101000.00000100.00000000 |

如上图中所示,四个IP左边完全相同的部分:11000000.10101000.00000 共21位,那么聚合后的子网就是21。注意,这里只是讲方法,没考虑这些IP是否符合聚合规范。

三、通过计算来判断两个IP是否在同一网络

计算方法是用IP和子网进行 "位与" 运算,如果得到的结果一致,则两个IP在同一网络,不一致则属于不同网络。

计算之前,先来了解一下 "位与" 运算

参与计算的两个数,其对应的位都为1时,结果为1,其中一个为0,则结果为0。

位与计算如图:

|---------|---|---|---|---|---|---|---|---|
| IP(二进制) | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 子网(二进制) | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
| 与运算结果 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |

现在了解了位与运算,下面举几个例子看一下:

计算一:192.168.1.1/24 和 192.168.2.1/24

|---------|----------|----------|----------|----------|
| 192.168.1.1/24 |||||
| IP(二进制) | 11000000 | 10101000 | 00000001 | 00000001 |
| 子网(二进制) | 11111111 | 11111111 | 11111111 | 00000000 |
| 与运算结果: | 11000000 | 10101000 | 00000001 | 00000000 |
| 与运算十进制: | 192 | 168 | 1 | 0 |
| |||||
| 192.168.2.1/24 |||||
| IP(二进制) | 11000000 | 10101000 | 00000010 | 00000001 |
| 子网(二进制) | 11111111 | 11111111 | 11111111 | 00000000 |
| 与运算结果: | 11000000 | 10101000 | 00000010 | 00000000 |
| 与运算十进制: | 192 | 168 | 2 | 0 |

根据上表可知:位与运算的结果不同,因此它们属于不同网络。

如果把子网改成23位呢?我们再来算一下:

计算二:192.168.1.1/23 和 192.168.2.1/23

|---------|----------|----------|----------|----------|
| 192.168.1.1/23 |||||
| IP(二进制) | 11000000 | 10101000 | 00000001 | 00000001 |
| 子网(二进制) | 11111111 | 11111111 | 11111110 | 00000000 |
| 与运算结果: | 11000000 | 10101000 | 00000000 | 00000000 |
| 与运算十进制: | 192 | 168 | 0 | 0 |
| |||||
| 192.168.2.1/23 |||||
| IP(二进制) | 11000000 | 10101000 | 00000010 | 00000001 |
| 子网(二进制) | 11111111 | 11111111 | 11111110 | 00000000 |
| 与运算结果: | 11000000 | 10101000 | 00000010 | 00000000 |
| 与运算十进制: | 192 | 168 | 2 | 0 |

仍然不同。因此,即使是23位的子网,它们仍属不同网络。

如果保持23位掩码,然后把192.168.2.1改成192.168.0.1,又会如何?

计算三:192.168.1.1/23和192.168.0.1/23

|---------|----------|----------|----------|----------|
| 192.168.1.1/23 |||||
| IP(二进制) | 11000000 | 10101000 | 00000001 | 00000001 |
| 子网(二进制) | 11111111 | 11111111 | 11111110 | 00000000 |
| 与运算结果: | 11000000 | 10101000 | 00000000 | 00000000 |
| 与运算十进制: | 192 | 168 | 0 | 0 |
| |||||
| 192.168.0.1/23 |||||
| IP(二进制) | 11000000 | 10101000 | 00000000 | 00000001 |
| 子网(二进制) | 11111111 | 11111111 | 11111110 | 00000000 |
| 与运算结果: | 11000000 | 10101000 | 00000000 | 00000000 |
| 与运算十进制: | 192 | 168 | 0 | 0 |

运算结果相同,因此 192.168.0.1/23 和 192.168.1.1/23 属于相同网络

二进制转换技巧

子网掩码的介绍就先到这里,下面讲讲二进制转换的一点技巧,尤其在网工考试中会比较实用。

吐槽一下我考试时坐旁边的兄弟。。我不知道他在草稿纸上写些什么,一张A4纸居然不够他写,又跟监考老师要了一张!说实话,当时我惊呆了,网工考试真的不需要草稿纸啊~~

后面想想,可能是不懂二进制的转换技巧吧,所以这里讲讲。。

其实真的非常简单,只需要只记住一条规则:从右到左,每往前一位,数值翻倍

这样就能得到下表:

|-----|-----|----|----|----|---|---|---|---|
| #### 进制转换对照表 |||||||||
| 二进制 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 十进制 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |

知道了这个,记算就非常简单了,下面举两个例子:

1、写出27位子网掩码的点分十进制

前面已经讲过子网掩码的规则,那么点分二进制就是:11111111.11111111.11111111.11100000

根据上方转换对照表,把每一位1所对应的数值相加:

11111111 = 128+64+32+16+8+4+2+1 = 255

11100000 = 128+64+32 = 224

计算得到:255.255.255.224

2、判断这个子网掩码是否正确:255.255.255.251

根据对照表加一下看:

128+64+32+16+8 = 248

128+64+32+16+8+4 = 252

多一位小了,少一位大了。显然,251这个子网是不对的

当然,方法往往不止一个,多思考会有更多收获,比如这里不从前面加,而从后面计算:

255-1 = 254

255-1-2 = 252

255-1-2-4 = 248

后话

希望这篇文章能够帮助到你!

也祝愿报考网工的朋友,下次能顺利过关!

skyyx2002

2025.12.19

相关推荐
JY.yuyu1 小时前
OSPF路由协议
网络
kiiila1 小时前
【网络】网络通信模型
网络
2501_915918412 小时前
TCP 抓包分析在复杂网络问题中的作用,从连接和数据流层面理解系统异常行为
网络·网络协议·tcp/ip·ios·小程序·uni-app·iphone
杰克崔2 小时前
进程内mmap锁相互干扰问题
linux·运维·服务器·车载系统
2501_924064112 小时前
2025年一站式测试平台对比:可视化报告与自动化监控最佳实践
运维·自动化
while(1){yan}2 小时前
基础IP协议知识
网络·网络协议·tcp/ip
恒创科技HK2 小时前
2026年香港服务器有哪些区域可选?
运维·服务器
xjxijd3 小时前
工业元宇宙 IDC 支撑:数字孪生算法 + 边缘服务器,生产调度响应速度提 3 倍
运维·服务器·算法
程序员zgh3 小时前
代码重构 —— 读后感
运维·c语言·开发语言·c++·重构