zoukankan      html  css  js  c++  java
  • 【网络】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的幂的结果,不需要死记硬背,有记忆技巧,后面介绍。

    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

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/paulwinflo/p/8436465.html
Copyright © 2011-2022 走看看