【网络】IP子网划分详解
1、IP地址组成
IP地址组成示意图
IP地址由32位二进制组成,32位二进制分成了4字节,每字节8位,字节之间用符.(点)分隔,为了方便人们记忆,经常需要转换成十进制数字显示,每字节最大为255(十进制)即二进制表示为11111111(8个1)。
如255.255.255.128转换成二进制结果如下(具体转换方法后面介绍,也可以用在线转换工具转换http://www.023wg.com/jinzhi/),
11111111.11111111.11111111.10000000
那么255对应11111111是怎么来的呢,方法就是255除以2取余数(余数只有1或0两种,小学我们就学过除法哦)直到除尽为止,取余数时最后一个剩余数放左边,余数从后往前依次排列。
如255/2=127余1
127/2=63余1
63/2=31余1
31/2=15余1
15/2=7余1
7/2=3余1
3/2=1余1
还剩1
依次最后一个剩余数放左边到→排列为11111111。
再举例128的二进制10000000如何得来的,按照前面的算法规则,
128/2=64余0
64/2=32余0
32/2=16余0
16/2=8余0
8/2=4余0
4/2=2余0
2/2=1余0
还剩1
依次最后一个余数放左边得出10000000,这里有个注意点不知大家发现没有,十进制转二进制时最后都是剩余数1哦。
提问,请大家算出64的二进制是多少?看到这里大家知道为什么每字节最大为255了吗?答案可进认证网络工程师QQ群474079428获取。
那么二进制转成十进制如何计算呢?我们后面再介绍。
2、默认子网掩码
A类网络的默认子网掩码为255.0.0.0,B类网络的默认子网掩码为255.255.0.0,C类网络的默认子网掩码为255.255.255.0,至于为什么是这样,答案可以说是RFC规定的,也可以是…..哦,解释起来好像有点长,大家可以进群聊聊或搞懂本文的主题后再去了解也行,暂时记住这三类就行了。
3、理解2的幂
2的幂也称为2的指数,还称为2的次方,如2的2次方、2的3次方等等,大家记住下面的2的幂的结果,不需要死记硬背,有记忆技巧,后面介绍。
2 1=2
22=4
23=8
24=16
25=32
26=64
27=128
28=256
记忆技巧,不知大家发现没,由于是2的幂,所有相邻的幂的前后都是相差2倍,所以只要知道其中一个幂值,就知道相邻的幂的值。
理解了2的幂,那么我们来回答前面的问题,二进制如何计算转换成十进制数。同样举例,11111111转成十进制如何计算呢?
从右往左开始依次以每位二进制数值×2的0次幂、2的1此幂、2的2此幂依次类推,算出结果相加得到的和就是十进制数。
1×20+1×21+1×22+1×23+1×24+1×25+1×26+1×27=1+2+4+8+16+32+64+128=255,这里0次方到7次方刚好8位,注意任何的0次方都是1哦。
再举例,11100000
0×20+0×21+0×22+0×23+0×24+1×25+1×26+1×27=0+0+0++0+0+32+64+128=224
4、CIDR
CIDR(无类别域间路由,Classless Inter-Domain Routing)。CIDR最大的特点是用斜杠(/)来表示子网掩码,指出了子网掩码中有多少位1。这种表示方法我们经常在运营商给我的IP地址中看到,我们经常需要根据这种表示方法算出我们的可用IP地址是哪些。
假如电信给了我们这段地址61.168.1.32/28,我们可用的IP地址是多少呢?这个问题我们先不回答,等后面详细讲解子网划分自后再回头来看。
A类网络默认子网掩码是255.0.0.0,用CIDR表示为/8
B类网络默认子网掩码为255.255.0.0.0,用CIDR表示为/16
C类网络默认子网掩码为255.255.255.0,用CIDR表示为/24
看到这里,大家知道了吧,/8表示占用8位1,即占用一个字节,/16表示占用16位1,即2字节,/24占用24位1,即占用3字节,大家记住这个默认规则,是后面学习子网划分以及以后心算子网划分的重要技巧。
举例,子网掩码255.255.255.128,用CIDR表示是多少呢?首先这是个C类网络地址,前面三个字节都是255,转换成二进制都为1,即11111111.11111111.11111111,即24位1。128转换成二进制位10000000,即1占用了一位。整个子网掩码占用了25位1,所以用CIDR表示为/25,即255.255.255.128(/25),假如IP段为192.168.1.0,用CIDR表示则为192.168.1.0/25。
再举例,192.168.1.0,255.255.255.192,用CIDR表示?首先判断出是C类网络,前面占用了3字节(24位)1,192换算成二进制位11000000,占用了2位1,总共是26位1.所以CIDR表示为192.168.1.0/26。
提问,192.168.1.0/28,大家能算出子网掩码是多少吗?提示,这里就是根据前面的计算方法一样反推回来算
下面开始学习子网划分,在实际项目中划分之网之前,首先得搞懂以下几个需求:
1、需要划分成多少个网络(子网)?
假如要划分4个网络,则2X=4,X=2、要划分8个网络,则2X=8,X=3,现在知道为什么要先搞懂2的幂了吧,这里X就是=2的幂值。
那么X代表什么意思呢?X就是取值多少位1,如11000000,就是借2位,即X=2,反推知道一个字节(8位)如果为11000000,则表示可以划分4个网络(22=4);如果为11110000,则表示借4位,可以划分16个网络(24=16)。
2、每个网络需要多少个IP?
计算公式:2y-2,y代表取值多少位0,如11111000,代表取值3位0,即y=3,得出23=8-2=6,即每个网络可用的IP数量是6个。
假如每个网络需要60台主机的IP,那么如何计算呢?即2y≥60,根据2的幂算法得出,26=64-2=62,所有y的值为6。
这里公式里为什么要减2呢?请大家先思考下,后面重庆网管博客将详细介绍。
3、有哪些子网网络(块大小)?
计算公式:256-子网掩码。假如子网掩码为255.255.255.192,则块大小为256-192=64,即块大小为64。从0开始以64为基数不断递增,直到达到子网掩码值,中间的结果即为子网,本例中子网即0、64、128、192。
再举例,加入子网掩码为255.255.255.128,则块大小为256-128=128,即块大小为128,子网0、128。
4、每个子网的子网号和广播地址是多少?
子网号很简单,即子网块值,如掩码为192,则子网块为256-192=64,得出子网为0、64、128、192,即子网号为0、64、128、192。再如掩码为128,则子网为128,则子网好0、128。
广播地址也很简单,总是下一个子网前面的数。如子网号为0、64、128、192、则广播地址为63、127、191。再如子网号为0、128,则广播地址为127.
看到这里大家知道为啥在计算每个网络可用的IP数时,公式里要-2吗?这是因为每个子网号(子网号也是一个IP地址)和广播地址是不能配给主机用的。至于为啥不能配给主机用?这个不在本主题讨论范围内,想了解的朋友可用进入认证网络工程师QQ群474079428讨论。
5、每个子网的可用(合法)的主机地址是哪些?
规则就是除去每个每个子网的子网号、广播地址,剩下的就是可用的主机地址,如子网号为0、64、128、192,则可用的主机地址为1-62、65-126、129-190,因为0是子网地址,63是广播地址,同样128、192是子网地址,127、191是广播地址。
6、C类网络子网划分
举例,192.168.10.0,255.255.255.224
1、可划分成多少个子网?
根据前面的知识,首先把224转换成二进制,得出为11100000,1占了3位,因此23=8,可用划分8个子网。
2、每个子网有多少个可用的IP?
这里看0占了5位,因此25-2=30,可用IP数为30.
3、有哪些子网网络?
256-224=32,即以32为基数不断递增,直到224,即0、32、64、96、128、160、192、224。即192.168.10.0、192.168.10.32、192.168.10.64、192.168.10.96、192.168.10.128、192.168.10.160、192.168.10.192、192.168.10.224。
4、每个子网网络的广播地址是多少?
每个子网网络的广播地址总是下一个子网前面的数,即31、63、95、127、159、191、223,即192.168.10.31、192.168.10.63、192.168.10.95、192.168.10.127、192.168.10.159、192.168.10.191、192.168.10.223。
5、每个子网的可用地址是哪些?
即减去每个子网的子网地址和广播地址,剩下的就是可用地址。本例中的可用地址为1-30、33-62、65-94、129-158、161-190、193-222。
再举例,192.168.10.0/30
1、可划分成多少个子网?
因为CIDR表示的子网掩码,首先得算出占用了多少位1,即30-24(因为是C类网络,前面三个字节都是255,即8位1,共24位1)=6,即6位1。所以26=64,即64个子网。
2、每个子网有多少个可用的IP?
因为1位占了6个,0位只有2个了,得出22-2=2,所以是2个可用IP地址。
3、有哪些子网网络?
因为1位占了6个,所以得出21+22+23+24+25+26=252,即256=252=4,得出块大小为4,子网网络为0、4、8、12、16、……、240、244、248、252,即192.168.10.0、192.168.10.4、192.168.10.8、……192.168.10.248、192.168.10.252.
4、每个子网网络的广播地址是多少?
下一个子网之前的数字,即192.168.10.3、192.168.10.7、192.168.10.11、……、192.168.10.247、192.168.10 .251,你算对了吗。
5、每个子网的可用地址是哪些?
除去子网地址和广播地址就是可用地址,本例中的可用地址为1,2、5,6、……、249,250。
无论是A类、B类、C类网络,在使用子网掩码/30时,每个子网只包含2个主机地址,这种子网掩码只适合用于点到点链路。
7、B类网络子网划分
通过前面的知识我们知道B类地址中,有16位可用的主机地址,这意味着我们可将其中的14位用于子网划分,因为至少要保留2位用于主机编址。
举例,172.17.0.0 255.255.128.0
1、可划分成多少个子网?
首先128转换成二进制位10000000,因为此例是属于B类网络,至少需要保留16位掩码位(16位1)所以此处x=1,得出21=2。答案是可以划分2个子网。
2、每个子网有多少个可用的IP?
这里0位总共占了15位,215-2=32766.
3、有哪些子网网络?
256-128=128,即0.0、128.0,得出172.17.0.0、172.17.128.0
4、每个子网网络的广播地址是多少?
下一个子网之前的数字,172.17.127.255、172.17.255.255.
5、每个子网的可用地址是哪些?
子网0.0第一个可用地址为172.17.0.1,最后一个可用地址为172.17.127.254;子网128.0第一个可用地址为172.17.128.1,最后一个可用地址为172.17.255.254.
再举例,172.17.0.0/20
1、可划分成多少个子网?
因为此例是属于B类网络,至少需要保留16位掩码位(16位1)所以此处x=4,得出24=16。答案是可以划分16个子网。
2、每个子网有多少个可用的IP?
这里1位占了4位,所以这里0位总共占了12位,212-2=4094.
3、有哪些子网网络?
因为1位占了4位,得出24+25+26+27=240。
256-240=16,即0.0、16.0、……、240.0,得出172.17.0.0、172.17.16.0、……、172.17.240.0。
4、每个子网网络的广播地址是多少?
下一个子网之前的数字,172.17.15.255、……、172.17.223.255.
5、每个子网的可用地址是哪些?
子网0.0第一个可用地址为172.17.0.1,最后一个可用地址为172.17.15.254;……。
转载文章,原文地址http://www.023wg.com/jcpz/294.html
【网络】IP子网划分详解的更多相关文章
- 网络编程之TCP/IP各层详解
网络编程之TCP/IP各层详解 我们将应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来与功能,搞清楚了每层的主要协议,就理解了整个物联网通信的原理. 首先,用户感知到的只 ...
- 自学Zabbix9.2 zabbix网络发现规则配置详解+实战
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix9.2 zabbix网络发现规则配置详解+实战 1. 创建网络发现规则 Conf ...
- Docker Kubernetes Service 网络服务代理模式详解
Docker Kubernetes Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...
- fabric网络环境启动过程详解
这篇文章对fabric的网络环境启动过程进行讲解,也就是我们上节讲到的启动测试fabric网络环境时运行network_setup.sh这个文件的执行流程 fabric网络环境启动过程详解 上一节我们 ...
- Java网络编程和NIO详解开篇:Java网络编程基础
Java网络编程和NIO详解开篇:Java网络编程基础 计算机网络编程基础 转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA 我们是幸运的,因为 ...
- Java网络编程和NIO详解3:IO模型与Java网络编程模型
Java网络编程和NIO详解3:IO模型与Java网络编程模型 基本概念说明 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32 ...
- Java网络编程和NIO详解8:浅析mmap和Direct Buffer
Java网络编程与NIO详解8:浅析mmap和Direct Buffer 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎阅览我的CSDN专栏:Java网络编程和NI ...
- Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introd ...
- Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...
随机推荐
- eclipse中访问不了tomcat首页server Locations变灰无法编辑
eclipse中访问不了tomcat首页server Locations变灰无法编辑 2014年07月25日 14:37:21 wuha0 阅读数:19139更多 个人分类: servlet 解决 ...
- java富文本编辑器KindEditor
在页面写一个编辑框: <textarea name="content" class="form-control" id="content&quo ...
- SHELL输出带颜色字体
输出特效格式控制:\033[0m 关闭所有属性 \033[1m 设置高亮度 \03[4m 下划线 \033[5m 闪烁 \033[7m 反显 \033[8m 消隐 \ ...
- 更改Windows更新源(解决公司内部网络无法下载语言包或更新的问题)
打开注册表 找到HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate 将WUServer.WUStatusServe ...
- int 转double , 转float
Integer log = 21424344;Double log1 = log.doubleValue() / 1000000;System.out.println(log1);BigDecimal ...
- There is no getter for property named 'user' in 'class com.jyr.wh.domain.User' 异常
今天在使用mybatis时,出现了一个问题:There is no getter for property named 'user' in 'class com.jyr.wh.domain.User, ...
- java多线程、线程池及Spring配置线程池详解
1.java中为什么要使用多线程使用多线程,可以把一些大任务分解成多个小任务来执行,多个小任务之间互不影像,同时进行,这样,充分利用了cpu资源.2.java中简单的实现多线程的方式 继承Thread ...
- 用chrome和anywhere,配合安卓机搭建最简单的移动端页面测试。
很多时候,我们前端在写移动端页面的时候,虽然目前chrome有调试模式,可以模拟手机的部分效果,但仍有部分效果需要直接在手机上进行页面的调试,今天就在这里推荐一个适合windows+安卓的无需连接局域 ...
- break 和 continue 语句, 以及循环中的 else 子句
break 语句工作得如同 C 语言一样, 跳出最小的 for 或 while 循环.循环语句可以有一个 else 子句; 该子句会在以下情况被执行: 循环因迭代到列表末尾而终止 (for 语句), ...
- XAF创建一个DashBoard
1.首先启动windows程序之后点击DashBoard导航栏 2.接着点击新建按钮,开始创建一个DashBoard 3.接着根据你的数据来源选择数据源,这里我选择了数据库 4.接着填好你的服务器和数 ...