首先,我们看一个CCNA考试中常见的题型:一个主机的IP地址是202.112.14.137,掩码是255.255.255.224,要求计算这个主机所在网络的网络地址和广播地址。
常规办法是把这个主机地址和子网掩码都换算成二进制数,两者进行逻辑与运算后即可得到网络地址。其实大家只要仔细想想,可以得到另一个方法: 255.255.255.224的掩码所容纳的IP地址有256-224=32个(包括网络地址和广播地址),那么具有这种掩码的网络地址一定是32的倍数。而网络地址是子网IP地址的开始,广播地址是结束,可使用的主机地址在这个范围内,因此略小于137而又是32的倍数的只有128,所以得出网络地址是202.112.14.128.而广播地址就是下一个网络的网络地址减1.而下一个32的倍数是160,因此可以得到广播地址为 202.112.14.159.可参照下图来理解本例:
CCNA考试中,还有一种题型,要你根据每个网络的主机数量进行子网地址的规划和计算子网掩码。这也可按上述原则进行计算。比如一个子网有10台主机,那么对于这个子网就需要10+1+1+1=13个IP地址。(注意加的第一个1是指这个网络连接时所需的网关地址,接着的两个1分别是指网络地址和广播地址。)13小于16(16等于2的4次方),所以主机位为4位。而256-16=240,所以该子网掩码为255.255.255.240.
如果一个子网有14台主机,不少同学常犯的错误是:依然分配具有16个地址空间的子网,而忘记了给网关分配地址。这样就错误了,因为14+1+1+1 =17 ,大于16,所以我们只能分配具有32个地址(32等于2的5次方)空间的子网。这时子网掩码为:255.255.255.224.
三、 IP 地址的局限性 最初的因特网设计者没有预想到网络会有如此快速地发展,因此现在网络面临的问题都可以追溯到因特网发展的早期决策上,IP地址的分配更能体现这点。
目前使用的IPv4地址使用32位的地址,即在IPv4的地址空间中有232(4,294,967,296,约为43亿)个地址可用。这样的地址空间在因特网早期看来几乎是无限的,于是便将IP地址根据申请而按类别分配给某个组织或公司,而很少考虑是否真的需要这么多个地址空间,没有考虑到IPv4地址空间最终会被用尽。
因此,IPv4地址是按照网络的大小(所使用的IP地址数)来分类的,它的编址方案使用"类"的概念。A、B、C三类IP地址的定义很容易理解,也很容易划分,但是在实际网络规划中,它们并不利于有效地分配有限的地址空间。对于A、B类地址,很少有这么大规模的公司能够使用,而C类地址所容纳的主机数又相对太少。所以有类别的IP地址并不利于有效地分配有限的地址空间,不适用于网络规划。
在这种情况下,人们开始致力于下一代因特网协议——IPv6的研究。由于现在IPv6的协议并不完善和成熟,需要长期的试验验证,因此,IPv4到 IPv6的完全过渡将是一个比较长的过程,在过渡期间我们仍然需要在IPv4上实现网络间的互连。而在90年代初期引入了变长子网掩码(VLSM)和无类域间路由(CIDR)等机制,作为目前过渡时期提高IPv4地址空间使用效率的短期解决方案起到了很大的作用。
快速计算子网掩码和主机块 一、明确概念 在介绍十进制算法前我们先要明确一些概念。
类范围: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来进行)。
二、变量说明 1.Subnet_block指可分配子网块大小,表示在某一子网掩码下子网的块数。
2.Subnet_num是可分配子网数,指可分配子网块中要剔除首、尾两块,是某一子网掩码下可分配的实际子网数量。Subnet_num =Subnet_block-2.
3.IP_block指每个子网可分配的IP地址块大小。
4.IP_num指每个子网实际可分配的IP地址数。因为每个子网的首、尾IP地址必须保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2,IP_num也用于计算主机块。
5.M指子网掩码。
表示上述变量关系的公式如下:
M=256-IP_block IP_block=256/Subnet_block或Subnet_block=256/IP_block IP_num=IP_block-2 Subnet_num=Subnet_block-2.
6.2的幂数。大家要熟练掌握28(256)以内的2的幂代表的十进制数(如128=27、64=26等),这样可以使我们立即推算出Subnet_block和IP_block的数目。
三、举例说明 现在,通过举一些实际例子,大家可以对子网掩码和主机块的十进制算法有深刻的了解。
1.已知所需子网数12,求实际子网数。
这里实际子网数指Subnet_num,由于12最接近2的幂为16(24),即Subnet_block=16,那么Subnet_num=16-2=14,故实际子网数为14.
2.已知一个B类子网的每个子网主机数要达到60×255个(约相当于X.Y.0.1~X.Y.59.254的数量),求子网掩码。
首先,60接近2的幂为64(26),即IP_block=64; 其次,子网掩码M=256-IP_block=256-64=192,最后由子网掩码格式B类是255.255.M.0得出子网掩码为255.255.192.0.
1 2
3 4