http://www.85flash.com/Get/edu/web-safety/jywzj/2006-4-22/001619714.html虽然目前有许多子网划分的软件,但是在理论上还是需要自己明白!
如何划分子网
为了提高IP地址的使用效率,引入了子网的概念。将一个网络划分为子网:采用借位的方式,从主机位最高位开始借位变为新的子网位,所剩余的部分则仍为主机位。这使得IP地址的结构分为三级地址结构:网络位、子网位和主机位。这种层次结构便于IP地址分配和管理。它的使用关键在于选择合适的层次结构--如何既能适应各种现实的物理网络规模,又能充分地利用IP地址空间(即:从何处分隔子网号和主机号)。
子网掩码的作用
简单地来说,掩码用于说明子网域在一个IP地址中的位置。子网掩码主要用于说明如何进行子网的划分。掩码是由32位组成的,很像IP地址。对于三类IP地址来说,有一些自然的或缺省的固定掩码。
如何来确定子网地址
如果此时有一个I P地址和子网掩码,就能够确定设备所在的子网。子网掩码和IP地址一样长,用32bit组成,其中的1表示在IP地址中对应的网络号和子网号对应比特,0表示在IP地址中的主机号对应的比特。将子网掩码与IP地址逐位相“与”,得全0部分为主机号,前面非0部分为网络号。
要划分子网就需要计算子网掩码和分配相应的主机块,尽管采用二进制计算可以得出结论,但采用十进制计算方法看起来要比二进制方法简单许多,经过一番观察和总结,我终于得出了子网掩码及主机块的十进制算法。
首先要明确一些概念:
类范围:IP地址常采用点分十进制表示方法X.Y.Y.Y,在这里
X=1--126时称为A类地址;
X=128--191时称为B类地址;
X=192--223时称为C类地址;
如10.202.52.130因为X=10在1--126范围内所以称为A类地址
类默认子网掩码:A类为 255.0.0.0
B类为 255.255.0.0
C类为 255.255.255.0
当我们要划分子网用到子网掩码M时,类子网掩码的格式应为
A类为 255.M.0.0
B类为 255.255.M.0
C类为 255.255.255.M
M是相应的子网掩码如:255.255.255.240
十进制计算基数:256,等一下我们所有的十进制计算都要用256来进行。
几个公式变量的说明:
Subnet_block:可分配子网块大小,指在某一子网掩码下的子网的块数。
Subnet_num:实际可分配子网数,指可分配子网块中要剔除首、尾两块,这是某一子网掩码下可分配的实际子网数量,它等于Subnet_block-2。
IP_block:每个子网可分配的IP地址块大小。
IP_num:每个子网实际可分配的IP地址数,因为每个子网的首、尾IP地址必须保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2,IP_num也用于计算主机段
M:子网掩码(net mask)。
它们之间的公式如下:
M=256-IP_block
IP_block=256/Subnet_block,反之Subnet_block=256/IP_block
IP_num=IP_block-2
Subnet_num=Subnet_block-2
2的冥数:要熟练掌握2^8(256)以内的2的冥代表的十进制数,如128=2^7、64=2^6…,这可使我们立即推算出Subnet_block和IP_block数。
现在我们举一些例子:
一、 已知所需子网数12,求实际子网数
解:这里实际子网数指Subnet_num,由于12最接近2的冥为16(2^4),即 Subnet_block=16,那么Subnet_num=16-2=14,故实际子网数为14。
二、 已知一个B类子网每个子网主机数要达到60x255(约相当于X.Y.0.1--X.Y.59.254的数量)个,求子网掩码。
解:1、60接近2的冥为64(2^6),即,IP_block=64
2、子网掩码M=256-IP_block
=256-64=192
3、子网掩码格式B类是:255.255.M.0.
所以子网掩码为:255.255.192.0
三、 如果所需子网数为7,求子网掩码 (仔细看这里,和我们考试的差不多)
解:1、7最接近2的冥为8,但8个Subnet_block因为要保留首、尾2个子网块,即 8-2=6<7,并不能达到所需子网数,所以应取2的冥为16,即Subnet_block=16
2、IP_block=256/Subnet_block=256/16=16
3、子网掩码M=256-IP_block=256-16=240。
四、 已知网络地址为211.134.12.0,要有4个子网,求子网掩码及主机段。
解:1、211.y.y.y是一个C类网,子网掩码格式为255.255.255.M
2、4个子网,4接近2的冥是8(2^3),所以Subnet_block=8
Subnet_num=8-2=6
3、IP_block=256/Subnet_block=256/8=32
4、子网掩码M=256-IP_block=256-32=224
5、所以子网掩码表示为255.255.255.224
6、因为子网块(Subnet_block)的首、尾两块不能使用,所以可分配6个子网块(Subnet_num),每块32个可分配主机块(IP_block)
即:32-63、64-95、96-127、128-159、160-191、192-223
首块(0-31)和尾块(224-255)不能使用
7、每个子网块中的可分配主机块又有首、尾两个不能使用(一个是子网网络地址,一个 是子网广播地址),所以主机段分别为:
33-62、65-94、97-126、129-158、161-190、193-222
8、所以子网掩码为255.255.255.224
主机段共6段为:211.134.12.33--211.134.12.62
211.134.12.65--211.134.12.94
211.134.12.97--211.134.12.126
211.134.12.129--211.134.12.158
211.134.12.161--211.134.12.190
211.134.12.193--211.134.12.222
可以任选其中的4段作为4个子网。
子网划分方法:
假设您在InterNIC申请到一个网络ID:192.20.16.0 但你有两个远程LAN需要互连,而且每个远程LAN各有60台主机.
若不划分子网,您就只能使用一个网络ID:192.20.16.0,使用缺省子网掩码:255.255.255.0,而且在这个子网中可以容纳的主机ID的范围: 1 92.20.16.1~192.20.16.254,即可以有254台主机.
现在若根据需要划分为两个子网,即借用主机ID中的两位用作网络ID,则子网掩码就应变为:255.255.255.192(11000000)目的是将借用的用作网络I D的位掩去.看一看划分出来的子网的情况:
▲192.20.16. 65~126
192.20.16.01000001~01111110
本网段(01 网段)主机数:2n-2=26-2=62或126-65+1=62
▲192.20.16. 129~190
192.20.16.10000001~10111110
本网段(10 网段)主机数:2n-2=26-2=62或190-129+1=62
▲子网号00全0表示本网络,子网号11全1是子网屏蔽,均不可用.
这个方案可以满足目前需求,但以后如果需要加入新的网段则必须重新划分更多的子网(即借用更多的主机ID位用作网络ID),或如果以后需要每个子网中的主机数更多则必须借用网络I D位来保证更多的主机数.
若InterNIC分配给您的B类网络ID为129.20.0.0,那么在使用缺省的子网掩码255.255.0.0的情况下,您将只有一个网络ID和256-2台主机(范围是:1 29.20.0.1~129.20.255.254).现在您有划分4个子网的需求.
1.手工计算法:
①将所需的子网数转换为二进制
4→00000100
②以二进制表示子网数所需的位数即为向缺省子网掩码中加入的位数(既应向主机ID借用的位数)
00000100→3位
③决定子网掩码
缺省的:255.255.0.0
借用主机ID的3位以后:255.255.224(11100000).0,即将所借的位全表示为1,用作子网掩码.
④决定可用的网络ID
列出附加位引起的所有二进制组合,去掉全0和全1的组合情况
code:
组合情况 实际得到的子网ID
000╳
001→32 (00100000 ) 129.20.32.0
010→64 (01000000 ) 129.20.64.0
011→96 (01100000 ) 129.20.96.0
100→128(10000000) 129.20.128.0
101→160(10100000) 129.20.160.0
110→192(11000000) 129.20.192.0
000╳
⑤决定可用的主机ID范围
code:
子网 开始的IP地址 最后的IP地址
129.20.32.0 129.20.32.1 129.20.63.254
129.20.64.0 129.20.64.1 129.20.95.254
129.20.96.0 129.20.96.1 129.20.127.254
129.20.128.0 129.20.128.1 129.20.159.254
129.20.160.0 129.20.160.1 129.20.191.254
129.20.192.0 129.20.192.1 129.20.223.254
2.快捷计算法:
①将所需的子网数转换为二进制
4→00000100
②以二进制表示子网数所需的位数即为向缺省子网掩码中加入的位数(既应向主机ID借用的位数)
00000100→3位
③决定子网掩码
缺省的:255.255.0.0
借用主机ID的3位以后:255.255.224(11100000).0,即将所借的位全表示为1,用作子网掩码
④将11100000最右边的"1"转换为十进制,即为每个子网ID之间的增量,记作delta =32
⑤产生的子网ID数为:2m-2 (m:向缺省子网掩码中加入的位数)
可用子网ID数:23-2=6
⑥将 附在原网络ID之后,形成第一个子网网络ID 129.20.32.0
⑦重复⑥,后续的每个子网的值加 ,得到所有的子网网络ID
129.20.32.0
129.20.64.0
129.20.96.0
129.20.128.0
129.20.160.0 129.20.192.0
129.20.224.0→224与子网掩码相同,是无效的网络ID
参考资料:百度