当前位置: 首页 > news >正文

子网掩码是什么以及子网掩码相关计算

子网掩码 (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个子网如下:

子网号网络地址主机地址范围广播地址
0192.168.1.0192.168.1.1–192.168.1.62192.168.1.63
1192.168.1.64192.168.1.65–192.168.1.126192.168.1.127
2192.168.1.128192.168.1.129–192.168.1.190192.168.1.191
3192.168.1.192192.168.1.193–192.168.1.254192.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地址计算—子网掩码确定和子网划分等详解 (附常见相关习题)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mysql的完整性约束
  • 奥运会奖牌榜-巴黎奥运会数据-历史奥运会数据
  • Hadoop YARN:现代大数据集群资源管理与作业调度
  • 20240814 每日AI必读资讯
  • 利用OncePerRequestFilter实现批量路经的转发
  • HarmonyOS(50) 截图保存功能实现
  • 100 Exercises To Learn Rust 挑战!if・Panic・演练
  • 从零开始构建霸王餐返利APP的技术路线与挑战
  • “前缀和”专题篇二
  • “程序员的艺术转身:AI绘画副业,从代码到画布的变现之旅“
  • 【文件IO】文件内容操作
  • jmeter使用while控制器时防止死循环
  • 临床数据科学和金融数据科学,选择R语言吧!
  • Python操作MongoDB文档存储
  • workerman下的webman路由浏览器跨域的一种问题
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • [nginx文档翻译系列] 控制nginx
  • React中的“虫洞”——Context
  • Redash本地开发环境搭建
  • vue的全局变量和全局拦截请求器
  • vue数据传递--我有特殊的实现技巧
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 基于Android乐音识别(2)
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 如何编写一个可升级的智能合约
  • 无服务器化是企业 IT 架构的未来吗?
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 中文输入法与React文本输入框的问题与解决方案
  • 【运维趟坑回忆录 开篇】初入初创, 一脸懵
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​决定德拉瓦州地区版图的关键历史事件
  • #NOIP 2014#Day.2 T3 解方程
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (C语言)共用体union的用法举例
  • (day6) 319. 灯泡开关
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (六)Hibernate的二级缓存
  • (排序详解之 堆排序)
  • (篇九)MySQL常用内置函数
  • (算法)大数的进制转换
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • ./configure,make,make install的作用
  • .Net Core 中间件验签
  • .Net Core与存储过程(一)
  • .NET delegate 委托 、 Event 事件
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net 应用中使用dot trace进行性能诊断