扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2008年8月7日
关键字: 网络管理
网络工程师
我们知道,IP是由四段数字组成,有3类常用的IP是:
A类IP段 0.0.0.0 到127.255.255.255
B类IP段 128.0.0.0 到191.255.255.255
C类IP段 192.0.0.0 到223.255.255.255
XP默认分配的子网掩码每段只有255或0,此即意味着:
A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳1677万多台电脑
B类的默认子网掩码 255.255.0.0一个子网最多可以容纳6万台电脑
C类的默认子网掩码 255.255.255.0 一个子网最多可以容纳254台电脑
当把子网掩码切换至二进制,就会发现,所有的子网掩码是由一串连续的1和一串连续的0组成的(一共4段,每段8位,一共32位数)。比如,以下是A/B/C三类默认子网掩码的二进制形式:
255.0.0.0 11111111.00000000.00000000.00000000
255.255.0.011111111.11111111.00000000.00000000
255.255.255.0 11111111.11111111.11111111.00000000
其实,还有好多种子网掩码,只要是一串连续的1和一串连续的0就可以了(每段都是8位)。如11111111.11111111.11111000.00000000,这也是一段合法的子网掩码。子网掩码决定的是一个子网的计算机数目,计算机公式是2的m次方,其中,我们可以把m看到是后面的多少颗0。如255.255.255.0转换成二进制,那就是11111111.11111111.11111111.00000000,后面有8颗0,那m就是8,255.255.255.0这个子网掩码可以容纳2的8次方(台)电脑,也就是256台,但是有两个IP是不能用的,那就是最后一段不能为0和255,减去这两台,就是254台。
以下就来介绍这个将IP地址10进制数转2进制的小公式。
首先,我们列出一行表格,填写8个数字,看下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
2. 这行数字的特点是:从右端数从1开始,由右到左每个数是前一个数的2倍,共运算7次,相当于一个比率为2的等比数列,我们的问题是,对于这8个数,如何给出对应的一个2进制数? 我们在进行IP地址转换时次序正相反,是由左向右的;对于IP地址中的每个数值,将与一个特定的10进制数进行比较,如果大于或等于这个特定数,就在下行空格内设置为0,否则就设置为1。
3. 这里看一个具体的IP地址: 154.31.16.13 , 它的开始值为154;现问:它能够提取出128吗?回答YES,所以128对应的是1,如下表所示:
a.
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 |
b. 现在计算新的比较数,等于26(154-128=26),现问:它能够提取出64吗?回答NO,所以64对应的是0,如下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 |
c. 再问:从26可以提取32吗?回答NO,所以32对应的是0,如下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 |
d. 再问:从26可以提取16吗?回答YES,所以16对应的是1,如下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 |
h. 再生成一个新的比较数,是10 (26-16=10),问:从10可以提取8吗?回答YES,所以8对应的是1,如下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 |
i. 再生成一个新的比较数:2 (10-8=2),问:从2可以提取4吗?回答NO,所以4对应的是0,如下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 | 0 |
j. 再问:从2可以提取2吗?回答YES,所以2对应的是1,如下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 1 |
k. 再生成一个新的比较数,是0 (2-2=0),所以对于最后一个数1
所对应的只能是0,如下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 |
一下:就是将所有分配为1的表格数进行相加:128+16+8+2=154
4. 再看例举的IP地址的第二个数是: 31,所以我们重复上述算法:
m. 现问:从31中能够提取出128吗?回答NO,所以有下表:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 |
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 |
o. 从31中能够提取出32吗?
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 |
p. 从31中能够提取出16吗?
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 | 1 |
q. 从15中能够提取出8吗?
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 | 1 | 1 |
r. 从7能够提取出4吗?
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 | 1 | 1 | 1 |
s. 从3能够提取出2吗?
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 | 1 | 1 | 1 | 1 |
t. 从1能够提取出1吗?
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 |
u. 所以,31转为2进制格式就是 00011111,验算一下就是:
16+8+4+2+1=31
5. 下一个数是16,采用同样的算法就得到:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 |
所以16的二进制格式为00010000。
6 下一个数13,得到的表格为:
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 |
所以13的二进制格式为00001101,验算算式为:8+4+1=13
这样我们就得到IP为154.31.16.13 的二进制格式:
10011010.00011111.00010000.00001101
我们可以换一个角度说明上述公式的实用性,例如·:一个公司有530台电脑,组成一个对等局域网,子网掩码设多少最合适?
530台电脑用B类IP最合适(A类不用说了,太多,C类又不够,肯定是B类),但是B类默认的子网掩码是255.255.0.0,可以容纳6万台电脑,显然不太合适,那子网掩码设多少合适呢?我们先来列个公式:
2的n次方=560
首先,我们确定2一定是大于8次方的,因为我们知道2的8次方是256,也就是C类IP的最大容纳电脑的数目,我们从9次方一个一个试2的9次方是512,不到560,2的10次方是1024,看来2的10次方最合适了。子网掩码一共由32位组成,已确定后面10位是0了,那前面的22位就是1,最合适的子网掩码就是:11111111.11111111.11111100.00000000,转换成10进制,那就是255.255.252.0。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者