什么是子网掩码

子网掩码,也称为网络掩码、地址掩码和子网掩码,是一种位掩码,用于指示IP地址的哪些位标识主机所在的子网,哪些位标识主机。子网掩码不能单独存在,必须与IP地址一起使用。子网掩码只有一个功能,就是把一个IP地址分成两部分:网络地址和主机地址。

  我们可以在cmd中输入“ipconfig”来查看我们的IP地址和其他信息

  假设你的IP地址是:192.168.42.217

  子网掩码是:25.255.255.0

  IP地址由网络地址和主机地址组成。子网掩码中由“.”分隔的第四个单元图中是0,这意味着IP地址的最后一个字节表示为主机地址。

  IP地址网络位和主机位的不同组合有不同的分类。对于A类地址,默认子网掩码为255 . 0 . 0 . 0;B类地址的默认子网掩码是255 . 255 . 0 . 0;C类地址的默认子网掩码是255.255.255.0。

  子网掩码是每个使用互联网的人都必须掌握的基础知识。只有掌握了,才能真正理解TCP/IP协议的设置。

  子网掩码——“全1”位模式,用于屏蔽IP地址的网络部分。对于A类地址,默认子网掩码为255 . 0 . 0 . 0;B类地址的默认子网掩码是255 . 255 . 0 . 0;C类地址的默认子网掩码是255.255.255.0。

  使用子网掩码,大型网络可以划分为子网,即VLSM(可变长度子网掩码),小型网络可以合并为大型网络,即超网。

  想要了解什么是子网掩码,就要了解IP地址的构成。互联网是由许多小网络组成的,每个网络都有许多主机,从而形成一个层次结构。在设计IP地址时,考虑到地址分配的分层特点,将每个IP地址分为网络号和主机号两部分,以方便IP地址的寻址操作。

  IP地址的网络号和主机号是多少位?如果不指定,就不知道哪些位是网络号,哪些位是主机号,需要通过子网掩码来实现。

  子网掩码的设置必须遵循一定的规则。与二进制IP地址一样,子网掩码由1和0组成,1和0分别是连续的。子网掩码的长度也是32位,左边是网络位,用二进制数‘1’表示,1的个数等于网络位的长度;右边是主机位,用二进制数‘0’表示,零的个数等于主机位的长度。这样做的目的是在掩码和ip地址之间进行按位AND运算时,在不改变原网段号的情况下,用0来覆盖原主机号,很容易通过0的位数来确定子网的主机号(主机号2的幂被提升到-2,因为当所有主机号都为1时,表示网络广播地址,当所有主机号都为0时,表示网络的网络号,这是两个特殊的地址)。只有通过子网掩码,才能显示出一台主机所在的子网与其他子网的关系,使网络能够正常工作。

  子网掩码的位数取决于可能的子网数量和每个子网的主机数量。在定义子网掩码之前,您必须知道使用的子网和主机数量。

  定义子网掩码的步骤是:

  确定我们应该使用哪个组地址。比如我们申请的网络号是‘210.73 . a . B’,网络地址是一个C类IP地址,网络标识是‘210.73 . a’,主机标识是‘B’。

  b .根据我们需要的子网数量和将来可能扩展到的子网数量,使用主机的一些位来定义子网掩码。比如我们需要12个子网,未来可能需要16个子网。使用第四个字节的前四位来确定子网掩码。前四位都设置为‘1’,也就是第四个字节为‘11110000’,暂时称为新的二进制子网掩码。

  将初始网络对应的所有位设置为‘1’,即前三个字节都设置为‘1’,那么子网掩码的不连续二进制形式为:‘111111111111’。

  d,把这个数字转换成:’255.255.255.240 ‘的不连续十进制形式。

  因为子网掩码的位数取决于可能的子网数量和每个子网中的主机数量。在定义子网掩码之前,您必须知道使用的子网和主机数量。

  按子网数量计算

  在找到子网掩码之前,您必须找出要划分的子网数量以及每个子网所需的主机数量。

  1)将子网数量转换成二进制表示

  2)得到二进制的位数,为n。

  3)获取IP地址的类子网掩码,将主机地址部分的前n个位置设置为1,得到对IP地址进行子网划分的子网掩码。

  将b类IP地址168.195.0.0划分为27个子网:

  1)27=11011

  2)二进制是五位数,N=5

  3)将B类地址的子网掩码255.255.0.0的主机地址的前五位设置为1(B类地址的主机位包括最后两个字节,所以这里将第三个字节的前五位设置为1),得到255.255.248.0

  即b类IP地址168.195.0.0的子网掩码分为27个子网(实际上分为32-2=30个子网)。

  本段介绍了旧标准下的计算方法。老标准后面会介绍。新标准里,可以先从27减去1。因为计算机是从0开始计算的,所以从0到27实际上有28个,所以如果你需要27,你需要从27中减去1。

  按主机数量计算

  1)将主机数量转换为二进制表示

  2)如果主机数量小于等于254(注意去掉预留的两个IP地址),则得到主机的二进制数,即N,这里一定是N8。如果大于254,则是N8,这意味着主机地址将占用8位以上。

  3)使用255.255.255.255将此类IP地址的所有主机地址位设置为1,然后从后向前将所有N位设置为0,这就是子网掩码值。

  将b类IP地址168.195.0.0分为

若干子网,每个子网内有主机700台:
  1) 700=1010111100
  2)该二进制为十位数,N=10
  3)将该B类地址的子网掩码255.255.0.0的主机地址全部置1,得到255.255.255.255
  然后再从后向前将后10位置0,即为: 11111111.11111111.11111100.00000000
  即255.255.252.0。这就是该欲划分成主机为700台的B类IP地址168.195.0.0的子网掩码。
  子网ID增量计算法(即计算每个子网的IP范围)
  其基本计算步骤如下:
  第1步,将所需的子网数转换为二进制,如所需划分的子网数为”4″,则转换成成二进制为00000100;
  第2步,取子网数的二进制中有效位数,即为向缺省子网掩码中加入的位数(既向主机ID中借用的位数)。如前面的00000100,有效位为”100″,为3位(在新标准中只需要2位就可以了);
  第3步,决定子网掩码。如IP地址为B类129.20.0.0网络,则缺省子网掩码为:255.255.0.0,借用主机ID的3位以后变为:255.255.224(11100000).0,即将所借的位全表示为1,用作子网掩码。
  第4步,将所借位的主机ID的起始位段最右边的”1″转换为十进制,即为每个子网ID之间的增量,如前面的借位的主机ID起始位段为”11100000″,最右边的”1″,转换成十进制后为2^5=32(此为子网ID增量)。
  第5步,产生的子网ID数为:2^m-2 (m为向缺省子网掩码中加入的位数),如本例向子网掩码中添加的位数为3,则可用子网ID数为:2^3-2=6个;
  第6步,将上面产生的子网ID增量附在原网络ID之后的第一个位段,便形成第一个子网网络ID 129.20.32.0(即第一个子网的起始IP段);
  第7步,重复上步操作,在原子网ID基础上加上一个子网ID增量,依次类推,直到子网ID中的最后位段为缺省子网掩码位用主机ID位之后的最后一个位段值,这样就可得到所有的子网网络ID。如缺省子网掩码位用主机ID位之后的子网ID为255.255.224.0,其中的”224″为借用主机ID后子网ID的最后一位段值,所以当子网ID通过以上增加增量的方法得到129.20.224.0时便终止,不要再添加了(只能用到129.20.192.0)。
  我们知道当主机ID为全0时表示网络ID,全1时表示广播地址。在RFC950标准中,不建议使用全0和全1的子网ID。
  例如把最后一个字节的前3位借给网络ID,用后面的5位来表示主机ID,这样就会产生2^3=8个子网,子网ID就分别为000、001、010、011、100、101、110、111这样8个,在RFC950标准中只能使用中间的6个子网ID。
  这么做的原因是:
  设我们有一个网络:192.168.0.0/24(即子网掩码的前24位为1,255.255.255.0),我们需要两个子网,那么按照RFC950,应该使用/26而不是/25,得到两个可以使用的子网192.168.0.64和192.168.0.128
  对于192.168.0.0/24,网络地址是192.168.0.0,广播地址是192.168.0.255
  对于192.168.0.0/26,网络地址是192.168.0.0,广播地址是192.168.0.63
  对于192.168.0.64/26,网络地址是192.168.0.64,广播地址是192.168.0.127
  对于192.168.0.128/26,网络地址是192.168.0.128,广播地址是192.168.0.191
  对于192.168.0.192/26,网络地址是192.168.0.192,广播地址是192.168.0.255
  你可以看出来,对于第一个子网,网络地址和主网络的网络地址是重叠的,对于最后一个子网,广播地址和主网络的广播地址也是重叠的。在CIDR流行以前,这样的重叠将导致极大的混乱。比如,一个发往192.168.0.255的广播是发给主网络的还是子网的这就是为什么在当时不建议使用全0和全1子网。在今天,CIDR已经非常普及了,所以一般不需要再考虑这个问题。
  子网掩码是一个32位地址,是与IP地址结合使用的一种技术。它的主要作用有两个,一是用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。二是用于将一个大的IP网络划分为若干小的子网络。
  使用子网是为了减少IP的浪费。因为随着互联网的发展,越来越多的网络产生,有的网络多则几百台,有的只有区区几台,这样就浪费了很多IP地址,所以要划分子网。使用子网可以提高网络应用的效率。
  通过IP 地址的二进制与子网掩码的二进制进行与运算,确定某个设备的网络地址和主机号,也就是说通过子网掩码分辨一个网络的网络部分和主机部分。子网掩码一旦设置,网络地址和主机地址就固定了。子网一个最显著的特征就是具有子网掩码。与IP地址相同,子网掩码的长度也是32位,也可以使用十进制的形式。例如,为二进制形式的子网掩码:1111 1111.1111 1111.1111 1111.0000 0000,采用十进制的形式为:255.255.255.0。
  通过计算机的子网掩码判断两台计算机是否属于同一网段的方法是,将计算机十进制的IP地址和子网掩码转换为二进制的形式,然后进行二进制”与”(AND)计算(全1则得1,不全1则得0),如果得出的结果是相同的,那么这两台计算机就属于同一网段。
  无子网的标注法
  对无子网的IP地址,可写成主机号为0的掩码。如IP地址210.73.140.5,掩码为255.255.255.255,也可以缺省掩码,只写IP地址。
  有子网的标注法
  有子网时,一定要二者配对出现。以C类地址为例。
  以下一段指定掩码为27位(1111 1111, 1111 1111, 1111 1111, 1110 0000=>255.255.255.224
  1.IP地址中的前3个字节表示网络号,后一个字节既表明子网号,又说明主机号,还说明两个IP地址是否属于同一个网段。如果属于同一网络区间,这两个地址间的信息交换就不通过路由器。如果不属同一网络区间,也就是子网号不同,两个地址的信息交换就要通过路由器进行。
  例如:
  对于IP地址为210.73.140.5的主机来说,其主机标识为5=>00000101,
  对于IP地址为210.73.140.16的主机来说它的主机标识为16=>00010000,
  以上两个主机标识的前面三位全是000,说明这两个IP地址在同一个网络区域中,这两台主机在交换信息时不需要通过路由器进行。
  210.73.60.1的主机标识为1=>00000001,
  210.73.60.252的主机标识为252=>11111100,
  这两个主机标识的前面三位000与111不同,说明二者在不同的网络区域,要交换信息需要通过路由器。其子网上主机号各为1和252。
  2.掩码的功用是说明有子网和有几个子网,但子网数只能表示为一个范围,不能确切讲具体几个子网,掩码不说明具体子网号,有子网的掩码格式(对C类地址)。
  子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据。
  最为简单的理解就是两台计算机各自的IP地址与子网掩码进行AND运算后,如果得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。就这么简单。
  子网掩码通常有以下2种格式的表示方法:
  1. 通过与IP地址格式相同的点分十进制表示
  如:255.0.0.0 或255.255.255.128
  2. 在IP地址后加上”/”符号以及1-32的数字,其中1-32的数字表示子网掩码中网络标识位的长度
  如:192.168.1.1/24 的子网掩码也可以表示为255.255.255.0
  子网掩码一般为255.255.255.0
  I P 地址 192.168.0.1
  子网掩码 255.255.255.0
  AND运算(AND运算法则:1 与1=1 ,1 与0=0 ,0 与1=0 ,0 与0=0 ,即当对应位均为1时结果为1,其余为0。)
  转化为二进制进行运算:
  I P 地址 11000000.10101000.00000000.00000001
  子网掩码 11111111.11111111.11111111.00000000
  AND运算
  11000000.10101000.00000000.00000000
  转化为十进制后为:
  192.168.0.0
  I P 地址 192.168.0.254
  子网掩码 255.255.255.0
  AND运算
  转化为二进制进行运算:
  I P 地址 11000000.10101000.00000000.11111110
  子网掩码 11111111.11111111.11111111.00000000
  AND运算
  11000000.10101000.00000000.00000000
  转化为十进制后为:
  192.168.0.0
  I P 地址 192.168.0.4
  子网掩码 255.255.255.0
  AND运算
  转化为二进制进行运算:
  I P 地址 11000000.10101000.00000000.00000100
  子网掩码 11111111.11111111.11111111.00000000
  AND运算
  11000000.10101000.00000000.00000000
  转化为十进制后为:
  192.168.0.0
  通过以上对三组计算机IP地址与子网掩码的AND运算后,我们可以看到它运算结果是一样的。均为192.168.0.0
  所以计算机就会把这三台计算机视为是同一子网络,然后进行通讯的。
  也许你又要问,这样的子网掩码究竟有多少个IP地址可以用呢你可以这样算。
  根据上面我们可以看出,局域网内部的ip地址是我们自己规定的(当然和其他的ip地址是一样的),这个是由子网掩码决定的通过对255.255.255.0的分析。可得出:
  前三位IP码由分配下来的数字就只能固定为192.168.0 所以就只剩下了最后的一位了,那么显而易见了,ip地址只能有(2的8次方-2),即256-2=254,一般主机地址全为0或者1(二进制)有其特殊的作用。
  那么你可能要问了:如果我的子网掩码不是255.255.255.0呢你也可以这样做啊假设你的子网掩码是255.255.128.0
  那么你的局域网内的ip地址的前两位肯定是固定的了
  这样,你就可以按照下边的计算来看看同一个子网内到底能有多少台机器
  1.十进制128=二进制1000 0000
  2.IP码要和子网掩码进行AND运算
  3.
  I P 地址 11000000.10101000.1*******.********
  子网掩码 11111111.11111111.10000000.00000000
  AND运算
  11000000.10101000.10000000.00000000
  转化为十进制后为:
  192 . 168. 128 . 0
  4.可知我们内部网可用的IP地址为:
  11000000.10101000.10000000.00000000
  到
  11000000.10101000.11111111.11111111
  (也可以是:11000000.10101000.00000000.00000000 到11000000.10101000.01111111.11111111)
  5.转化为十进制:
  192 . 168.128.0 到192 . 168.255.255 (或者192.168.0.0到192.168.127.255)
  6.0和255通常作为网络的内部特殊用途。通常不使用。
  7.于是最后的结果如下:我们单位所有可用的IP地址为:
  192.168.128.1-192.168.128.254
  192.168.129.1-192.168.129.254
  192.168.130.1-192.168.130.254
  192.168.131.1-192.168.131.254
  . . . . . . . . . . . . .
  192.168.139.1-192.168.139.254
  192.168.140.1-192.168.140.254
  192.168.141.1-192.168.141.254
  192.168.142.1-192.168.142.254
  192.168.143.1-192.168.143.254
  . . . . . . . . . . . . .
  192.168.254.1-192.168.254.254
  192.168.255.1-192.168.255.254
  8.总数为(255-128+1)*(254-1+1)=128 * 254=32512
  子网内包含的机器数目应该是2^n-2,比如说上面的子网掩码是255.255.128.0,那么他的网络号是17位,主机号是15位,只要主机号不全是0或者1就是可以的,所以ip地址是192.168.192.0(11000000.10101000.11000000.00000000)也允许,除掉全0全1,结果为2^15-2*(255-128+1)=32512
  9.看看的结果是否正确
  (1)、设定IP地址为192.168.128.1
  Ping 192.168.129.233通过测试
  访问可以显示出主页
  (2)、设定IP地址为192.168.255.254
  Ping 192.168.255.254 通过测试
  访问 可以显示出主页
  10.结论
  以上证明我们的结论是对的。
  现 在你就可以看你的子网中能有多少台机器了
  255.255.255.128
  分解:
  11111111.11111111.11111111.10000000
  所以你的内部网络的ip地址只能是