zoukankan      html  css  js  c++  java
  • 子网掩码与ip有实际关系吗?

    子网掩码是作为ip地址的标识,还是本身就是ip地址的一部分?
    例如10.10.10.1/24和10.10.10.1/25是同一个ip地址吗?

    作者:知乎用户
    链接:https://www.zhihu.com/question/29723388/answer/66737890
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    10.10.10.1/24 和 10.10.10.1/25
    一个是子网掩码为24的10.10.10.1的IP地址
    一个是子网掩码为25的10.10.10.1的IP地址
    表面上两个IP地址是一样的,但因为子网掩码的不同,导致网段的不同
    好比一号楼有201号房间,二号楼也有201房间,但这两个房间,不是同一个房间
    10.10.10.1/24 和 10.10.10.1/25也是两个IP地址

    -------------------------------------------------------------------------------
    详细展开,需要做一些基础知识的铺垫

    1.IP地址的种类?
    2.IP地址是怎样构成的?
    3.子网掩码是啥?
    4.10.10.10.1/24和10.10.10.1/25是啥?

    需要上网,连接上internet,必须要有公共ip,它是别人分配给你的

    我们可以百度自己的公共IP是多少,地址:IP/域名查询 - IP归属地查询



    因为人类依赖十进制,所以这里的IP地址用十进制的方式表示

    要让机器识别,还是得转为二进制

    (十进制IP地址) 14.145.184.184

    (二进制IP地址) 00001110 . 10010001 . 10111000 . 10111000

    手算麻烦,使用在线软件方便多了 进制转换工具


    这种IP方式的表示方法,叫做IPV4,就是通过4*8=32位来表示每个IP地址

    这样的话,一共有多少个IP地址呢?

    最小地址 00000000 00000000 00000000 00000000 也就是 0.0.0.0

    最大地址 11111111 11111111 11111111 11111111 也就是 255.255.255.255

    IPV4的方式,最多可以表示 255 * 255 * 255 * 255 = 4228250625 个ip地址 = 40亿

    40亿的IPV4地址,预计将会在2020年年前后分配完毕 (具体数字记不清)

    所以出现下图


    为了解决公网IP地址不足的情况,于是发明了私有IP (Private IP)

    比如一个家庭(公司)有几台电脑,每台电脑都拥有 私有IP,它们之间组成一个局域网

    这几个私有IP,可以通过某些技术(NAT),共同使用一个公有IP

    也就是说,一个公有IP,可以分出很多个很多个私有IP,这样IPV4不足的问题就解决了

    私有IP为了更好的管理,分为3种类型

    CLASS A:10.0.0.0 ~ 10.255.255.255
    CLASS B:172.16.0.0 ~ 172.31.255.255
    CLASS C:192.168.0.0 ~ 192.168.255.255

    看了我自己电脑的私有IP


    它属于C类型的网络

    例如10.10.10.1/24和10.10.10.1/25是同一个ip地址吗

    这里可以看到,10开头的,自然就是A类型的网络了

    2.IP地址是怎样构成的?


    寻找IP地址,可以用快递寻找门牌号码类比

    每栋楼有楼号,比如4号楼,5号楼等
    每栋楼有门牌号,比如101号房,102号房等

    IP地址同样有两部分地址组成,分别是"网络地址(网络号)"和“主机地址(主机号)”

    不同的分类(A,B,C)划分的"网络号"和“主机号”是不同的,这里有个表


    只要IP地址的"网络号net_id(紫色)"相同,我们就把这几个IP地址称之为在同一个网段

    彼此可以相互访问,比如联机打游戏

    当主机号全为0的时候,代表着整栋楼第一个房子,又叫做网络地址 network ip

    当主机号全为1的时候,代表着整栋楼最后一个房子,又叫做广播地址broadcast ip
    (我得想想该怎么说)

    3.子网掩码是啥?有什么作用?


    还是用楼房号来打比方好了

    在现实中,我们可以这样表示,1号楼201房间
    IP地址中,数字都是连在一起的,10101010.10101010.10101010.00000001
    我们怎么知道哪部分是楼号?哪部分是房间号呢?怎样划分呢?

    答案是通过——Netmask 子网掩码

    掩码的意思,就是把一部分的代码掩盖住,同时露出另一部分代码

    我想到佐罗用黑布把眼睛掩盖住只露出半张脸的样子...........


    子网掩码,是为了掩盖住“网络号net_id”,暴露出“主机号host_id”

    用1表示掩盖
    用0表示暴露

    回到题目,IP地址写法:10.10.10.1/24 10.10.10.1/25

    24说明了子网掩码遮住了24位,也说明了这个IP的“网络号net_id”是24位,网段占了24位

    25说明了子网掩码遮住了25位,也说明了这个IP的“网络号net_id”是25位,网段占了25位

    因为10.10.10.1/24 和 10.10.10.1/25的“网络号”不同,网段不同

    而网络地址(第一个IP地址),通过IP地址(二进制)和子网掩码(二进制)进行与操作得出

    10.10.10.1/24中的10.10.10.1二进制为 10101010.10101010.10101010.00000001 
    10.10.10.1/24中的子网掩码为 11111111 11111111 11111111 00000000  即255.255.255.0
    所以10.10.10.1/24中的网络地址为 10101010.10101010.10101010.00000000,即10.10.10.0
    10.10.10.1/24中的广播地址为 10101010.10101010.10101010.11111111,即10.10.10.255  
    所以这个网段里,能分配给主机使用的一共有254个IP地址,从10.10.10.1~10.10.10.254

    计算规则

    网络地址:把IP地址转成二进制和子网掩码进行与运算(逻辑乘法:0&0=0;0&1=0;1&0=0;1&1=1 )

    广播地址:把网络地址的主机位全部换成1得到广播地址

    ip地址等于网络地址加上主机地址

     ip地址分类

    A类

    个A类IP地址是指, 在IP地址的四段号码中,第一段号码为网络号码,剩下的三段号码为本地计算机的号码。如果用二进制表示IP地址的话,A类IP地址就由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”。A类IP地址中网络的标识长度为8位,主机标识的长度为24位,A类网络地址数量较少,有126个网络,每个网络可以容纳主机数达1600多万台。

    A类IP地址的子网掩码为255.0.0.0,每个网络支持的最大主机数为256的3次方-2=16777214台。

    B类

    一个B类IP地址是指,在IP地址的四段号码中,前两段号码为网络号码。如果用二进制表示IP地址的话,B类IP地址就由2字节的网络地址和2字节主机地址组成,网络地址的最高位必须是“10”。B类IP地址中网络的标识长度为16位,主机标识的长度为16位,B类网络地址适用于中等规模的网络,有16384个网络,每个网络所能容纳的计算机数为6万多台。

    B类IP地址的子网掩码为255.255.0.0,每个网络支持的最大主机数为256的2次方-2=65534台。

    C类

    一个C类IP地址是指,在IP地址的四段号码中,前三段号码为网络号码,剩下的一段号码为本地计算机的号码。如果用二进制表示IP地址的话,C类IP地址就由3字节的网络地址和1字节主机地址组成,网络地址的最高位必须是“110”。C类IP地址中网络的标识长度为24位,主机标识的长度为8位,C类网络地址数量较多,有209万余个网络。适用于小规模的局域网络,每个网络最多只能包含254台计算机。

    C类IP地址的子网掩码为255.255.255.0,每个网络支持的最大主机数为256-2=254台

    10.10.10.1/25中的10.10.10.1二进制为10101010.10101010.10101010.00000001
    10.10.10.1/25中的子网掩码为11111111 11111111 11111111 10000000
    所以10.10.10.1/25中的网络地址为 10101010.10101010.10101010.00000000,即10.10.10.0
    10.10.10.1/25中的广播地址为10101010.10101010.10101010.01111111,即10.10.10.127
    (在网络地址变广播地址的时候,因为子网掩码掩盖了25位,所以只能最后27位变成1)
    所以在这个网段能,能分配给主机使用的一共有126个地址,从10.10.10.1~10.10.10.126

    10.10.10.1/24 和 10.10.10.1/25
    一个是子网掩码为24的10.10.10.1的IP地址
    一个是子网掩码为25的10.10.10.1的IP地址
    表面上两个IP地址是一样的,但因为子网掩码的不同,导致网段的不同
    好比一号楼有201号房间,二号楼也有201房间,但这两个房间,不是同一个房间
    10.10.10.1/24 和 10.10.10.1/25也是两个IP地址
     
     
     
                子网掩码划分子网与主机位
     
     

    IP地址10.145.129.20,掩码255.255.248.0,网络地址和广播地址怎么计算?

    key:网络地址 10.145.128.0      广播地址 10.145.135.255
     
     
    IP转换成二进制:00001010  10010001   10000001   00010010
    掩码转换成二进制:11111111  11111111   11111000   00000000
    IP与掩码相与得网络地址(全1为1,见0为0):00001010  10010001   10000000   00000000
    网络地址转换成十进制为:10,145,128,0 
    看你的掩码把后24位的前13位划成了子网后11位划成了主机,故:
    广播地址则要把网络地址的主机位全换成1,得:00001010,10010001,10000111,1111111
    广播地址转换成十进制为:10,145,135,255 
    首先由ip地址结合子网掩码可以看出的是这是一个由A类地址,“借用”13位的主机位而得到的子网,所以很轻易地得到
    网络地址是:10.145.128.0,也即:00001010.10010001.10000 000.00000000(看出来没?前21(8+13)位是网络位,后11位是主机位)
    至于广播地址,网络位+全为1的主机位,即得:00001010.10010001.10000 111.11111111
    10进制表达方式就是10.145.135.255
    能懂吧?
     
     
  • 相关阅读:
    一个好的时间函数
    Codeforces 785E. Anton and Permutation
    Codeforces 785 D. Anton and School
    Codeforces 510 E. Fox And Dinner
    Codeforces 242 E. XOR on Segment
    Codeforces 629 E. Famil Door and Roads
    Codeforces 600E. Lomsat gelral(Dsu on tree学习)
    Codeforces 438D The Child and Sequence
    Codeforces 729E Subordinates
    【ATcoder】D
  • 原文地址:https://www.cnblogs.com/web21/p/6692864.html
Copyright © 2011-2022 走看看