子网掩码是什么以及子网掩码相关计算
子网掩码 (Subnet Mask)
又称网络掩码 (Netmask),告知主机或路由设备,地址的哪一部分是网络号,包括子网的网络号部分,哪一部分是主机号部分。
子网掩码使用与IP地址相同的编址格式,即32 bit—4个8位组的32位长格式。
在子网掩码中,网络部分和子网络部分对应的位全为“1”,主机部分对应的位全为“0”
网络掩码一般与IP地址结合使用,其中值为1的比特对应IP地址中的网络位;值为0的比特对应IP地址中的主机位,以此来辅助我们识别一个IP地址中的网络位与主机位。即网络掩码中1的个数就是IP地址的网络号的位数,0的个数就是IP地址的主机号的位数。
例如:172.31.128.255/18
其中18就是子网掩码,表示32位中高18位是1,其它位为0。它的二进制形式为11111111.11111111.11000000.000000,转为十进制就是255.255.192.0。

- 其中,蓝色部分为网络位,粉色部分为主机位。
为什么要使用子网掩码
使用IP地址优点:
可以根据IP地址的前四位来判别IP地址属于哪个类别。简单明了,选路简单。
使用IP地址缺点:
同⼀⽹络下没有地址层次,⽐如⼀个公司⾥⽤了 B 类地址,但是可能需要根据⽣产环境、测试环境、开发环境来划分地址层次,⽽这种 IP 分类是没有地址层次划分的功能,所以这就缺少地址的灵活性。
A、B、C类有个尴尬处境,就是不能很好的与现实⽹络匹配。
C 类地址能包含的最⼤主机数量实在太少了,只有 254 个,估计⼀个⽹吧都不够⽤。
⽽ B 类地址能包含的最⼤主机数量⼜太多了,6 万多台机器放在⼀个⽹络下⾯,⼀般的企业基本达不到这个规模,闲着的地址就是浪费。这两个缺点,都可以在 CIDR ⽆分类地址解决,因此也引入了子网掩码的概念
CIDR—无分类编址
CIDR中已经废弃了IP地址的分类,无分类编址的命名也是由此得来的,所以目前基本已经不再采用所谓的A类、B类、C类的IP地址分类表示法,引入一个额外的子网掩码(subnet mask)来区分网络号和主机号;子网掩码也是一个32位的正整数. 通常用一串 “0” 来结尾;将IP地址和子网掩码进行 “按位与” 操作, 得到的结果就是网络号;网络号和主机号的划分与这个IP地址是A类、B类还是C类无关。所以新的方式下,IP地址的表示方式为: IP地址 ::= {<网络号>, <子网号>, <主机号>}
根据子网掩码和IP地址可以求得网络号
将IP地址的二进制和子网掩码的二进制进行“&”(and)运算,得到的结果就是网络号。
ip: 10101100.00011111.10000000.11111111
子网掩码: 11111111.11111111.11000000.00000000
----------------------------------------------------
网络号: 10101100.00011111.10000000.00000000 &
网络号点分法表示: 172.31.128.0
根据子网掩码和IP地址可以求得主机号
用IP地址的二进制和(子网掩码的二进制的反码(0变1,1变0))进行“&”运算,得到的结果就是主机号。
ip: 10101100.00011111.10000000.11111111
子网掩码: 11111111.11111111.11000000.00000000
子网掩码取反: 00000000.00000000.00111111.11111111
----------------------------------------------------
主机号: 00000000.00000000.00000000.11111111 &
主机号点分法表示: 0.0.0.255
根据子网掩码和IP地址可以求得广播地址
在得到网络号的基础上,将网络号右边的表示IP地址的主机部分的二进制位全部填上1,再将得到的二进制数转换为十进制数就可以得到广播地址。
例如:子网掩码是11111111.11111111.11000000.00000000, 0有14个,主机位是14,网络号172.31.128.0,转换为二进制是 10101100.00011111.10000000.00000000,从右边数起,将14个0全部替换为1, 即:10101100.00011111.10111111.11111111,这就是这个子网的广播地址的二进制表示法。将这个二进制广播地址转换为十进制就是172.31.191.255。
网络号: 10101100.00011111.10000000.00000000子网掩码: 11111111.11111111.11000000.00000000
----------------------------------------------------
广播地址: 10101100.00011111.10111111.11111111 网络号从右向左0填为1,个数为掩码中的0
广播地址点分法表示: 172.31.191.255
可用IP地址范围
子网中可用的IP地址范围就是从网络号+1 ~广播地址-1。
子网划分
通过子网掩码划分出网络号和主机号,那实际上子网掩码还有⼀个作⽤,那就是划分子网。
子网划分实际上是将主机地址分为两个部分:子网网络地址和子网主机地址。形式如下:

假设对 C 类地址进⾏子网划分,⽹络地址 192.168.1.0,使⽤子网掩码 255.255.255.192 对其进⾏子网划分。
C 类地址中前 24 位是网络号,最后 8 位是主机号,根据子网掩码可知从 8 位主机号中借⽤ 2 位作为子网号(对应4个子网)。
C类网络地址: 11000000.10101000.00000001.00000000
子网掩码: 11111111.11111111.11111111.11000000
----------------------------------------------------
子网划分: 11000000.10101000.00000001.子网地址(2位)子网主机地址(6位)
划分后的4个子网如下:
| 子网号 | 网络地址 | 主机地址范围 | 广播地址 |
|---|---|---|---|
| 0 | 192.168.1.0 | 192.168.1.1–192.168.1.62 | 192.168.1.63 |
| 1 | 192.168.1.64 | 192.168.1.65–192.168.1.126 | 192.168.1.127 |
| 2 | 192.168.1.128 | 192.168.1.129–192.168.1.190 | 192.168.1.191 |
| 3 | 192.168.1.192 | 192.168.1.193–192.168.1.254 | 192.168.1.255 |
子网划分建议按以下步骤和实例计算子网掩码:
- 将要划分的子网数目转换为2的m次方。如要分8个子网,8=2^3。
- 取上述要划分子网数的2^ m的幂m。如2^3,即m=3。
- 将上一步确定的幂m按高序占用主机地址m位后转换为十进制。
如m为3 则是11100000,转换为十进制为224,即为最终确定的子网掩码。 - 如果是C类网,则子网掩码为255.255.255.224;如果是B类网,则子网掩码为255.255.224.0;如果是A类网,则子网掩码为255.224.0.0。
参考:IP地址计算—子网掩码确定和子网划分等详解 (附常见相关习题)
相关文章:
子网掩码是什么以及子网掩码相关计算
子网掩码 (Subnet Mask) 又称网络掩码 (Netmask),告知主机或路由设备,地址的哪一部分是网络号,包括子网的网络号部分,哪一部分是主机号部分。 子网掩码使用与IP地址相同的编址格式,即32 bit—4个8位组的32位长格式。…...
仿RabbitMQ实现消息队列
前言:本项目是仿照RabbitMQ并基于SpringBoot Mybatis SQLite3实现的消息队列,该项目实现了MQ的核心功能:生产者、消费者、中间人、发布、订阅等。 源码链接:仿Rabbit MQ实现消息队列 目录 前言:本项目是仿照Rabbi…...
SpringBoot教程(二十三) | SpringBoot实现分布式定时任务之xxl-job
SpringBoot教程(二十三) | SpringBoot实现分布式定时任务之xxl-job 简介一、前置条件:需要搭建调度中心1、先下载调度中心源码2、修改配置文件3、启动项目4、进行访问5、打包部署(上正式) 二、SpringBoot集成Xxl-Job1.…...
微前端架构的数据持久化策略与实践
微前端架构通过将一个大型前端应用拆分成多个小型、自治的子应用,提升了开发效率和应用的可维护性。然而,数据持久化作为应用的基础需求,在微前端架构中实现起来面临着一些挑战。本文将详细介绍在微前端架构下实现数据持久化的策略、技术和最…...
讲解 狼人杀中的买单双是什么意思
买单双这个概念通常出现在有第三方的板子中 比如 咒狐板子 丘比特板子 咒狐板子 第一天狼队只要推掉预言家 第二天就可以与咒狐协商绑票 推出其他好人 以及丘比特板子 如果拉出一个人狼链 那么如果孤独再连一个狼人 那么 狼队第一天就可以直接派人上去拿警徽,这样…...
回归分析系列5-贝叶斯回归
07贝叶斯回归 7.1 简介 贝叶斯回归将贝叶斯统计的思想应用于回归分析中,通过先验分布和似然函数来推断后验分布。在贝叶斯回归中,模型参数被视为随机变量,并且有自己的分布。通过贝叶斯公式,可以更新这些参数的分布,…...
oracle 数据中lsnrctl 是干啥的
突然发现lsnrctl stop 之后,依然可以启动数据库 就感觉怪怪的,一直以为这个是数据库的守护进程,原来不是。。。。 lsnrctl 是 Oracle 监听器控制实用程序的命令行界面工具,用于管理 Oracle Net 服务监听器。监听器是 Oracle 网络…...
Linux进程--进程地址空间
文章目录 一、进程地址空间1.想当然的内存2.实际的内存1.什么是地址空间2.地址空间和内存3.为什么要区分两种内存 一、进程地址空间 1.想当然的内存 我们在之前的学习中了解过内存的概念,所以变量都要存在内存中我们的程序才能跑起来,那么我们肯定也见…...
C语言传递指针给函数
C 语言允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可。 下面的实例中,我们传递一个无符号的 long 型指针给函数,并在函数内改变这个值 实例1:获取系统的时间值 能接受指针作为参数的函数,也能接受数…...
探索 Kubernetes 持久化存储之 Rook Ceph 初窥门径
在 Kubernetes 生态系统中,持久化存储是支撑业务应用稳定运行的基石,对于维护整个系统的健壮性至关重要。对于选择自主搭建 Kubernetes 集群的运维架构师来说,挑选合适的后端持久化存储解决方案是关键的选型决策。目前,Ceph、Glus…...
今日(2024 年 8 月 13 日)科技新闻
我国成功发射卫星互联网高轨卫星:该卫星的成功发射将助力我国卫星互联网的发展。中国首台中子全散射谱仪运行 3 年成果丰硕:由粤港科技合作打造的多物理谱仪,在中国散裂中子源上运行 3 年来,已完成 300 多项用户实验。该谱仪的关键…...
Unity大场景切换进行异步加载时,如何设计加载进度条,并配置滑动条按照的曲线给定的速率滑动
一、异步加载场景的过程 1、异步加载场景用到的API LoadSceneAsync 2、异步加载的参数说明 (1)默认参数:SceneManagement.LoadSceneAsync(“SceneName”); AsyncOperation task SceneManager.LoadSceneAsync("SceneName");&a…...
Selenium + Python 自动化测试16(Python基础复习)
我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用模块化测试的测试模型,从某一程度也反映出熟练掌握一门编程语言的重要性。 为了后续进一步深入学习。本篇文章主要做下Python基础知识的复习。…...
2024新型数字政府综合解决方案(六)
新型数字政府综合解决方案通过融合人工智能、大数据、区块链和云计算技术,构建了一个全方位智能化的政务平台,旨在提升政府服务的效率、透明度和公众参与度。该方案实现了跨部门的数据互联互通与实时更新,利用先进的数据分析和自动化处理技术…...
vscode的C/C++环境配置和调试技巧
目录 1.背景 2.下载编译器 3.配置环境变量 4.安装C/C插件 5.写C语言代码并且编译成功 5.1文件操作 5.2对于两个窗口的解释 5.3C语言编译环境配置 6.创建执行文件 7.编译运行过程 8.写其他的代码的解决方案一 9.写其他的代码的解决方案二 10.同时编译多个.c文件 10…...
Python制作《扫雷》游戏-附源码,轻松看懂,简单易学
今天介绍另一款经典小游戏,扫雷,这个应该是很多人windows电脑里玩的最多的游戏了,乐趣很多,而且还有一定的技术含量在里面,今天我们就来通过python实现这个小游戏。 创建扫雷文件 打开pycharm,创建一个名…...
8路VBO转HDMI2.0支持4K60频率ITE6265芯片方案心得分享
在此之前,有人找到我这边询问能不能将智能电视主板改成机顶盒,将VBO信号转换输出位HDMI进行投屏,具体应用奇奇怪怪!但是奈何是甲方大佬。认命照做。从网上也有搜索了解过这类芯片,发现资料很少,所以有了这篇…...
【问题解决3】【已解决】Cannot determine path to‘tools.jar‘libraryfor17
前几天在IDEA运行JAVA项目时,出现这个报错。 这是因为是这个笔记本上安装的IDEA版本是“IntelliJ IDEA 2020.3.1”,与JDK17版本不兼容,这种情况下要想使得IDEA版本与JDK版本兼容,就需要升级IDEA版本或者使用JDK较低版本ÿ…...
基于Spring Boot的高效宠物购物平台
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...
【Vue3】路由基础
【Vue3】路由基础 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
