解读IP地址并轻松划分子网

时间:2022-09-28 08:59:01

摘要:在计算机网络中,IP地址是TCP/IP协议的核心,同时也是教学中的重点难点问题。很多人对子网划分一直存在某些误区,而且要花费大量的时间在十进制和二进制的转换上。这里将为大家介绍IP地址的发展过程,以帮助大家更好地理解IP地址;同时也为大家介绍一种利用十进制进行子网规划的方法,希望能为有需要之人提供参考和借鉴。

关键词:IP地址;子网掩码;子网规划;“与差”运算;十进制

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)17-21391-04

1 引言

TCP/IP通讯协议起源干上世纪七十年代中叶美国军方的ARPA网络。其发展应用至八十年代初,开始风靡全球,现已成为了事实上的国际互联网络通讯协议标准。IP地址是TCP/IP协议的核心,同时也是教学中的重点难点问题。目前市面上一些相关方面的专著对IP地址及子网划分的介绍都比较简略,对于初学者来讲,这无疑阻碍了他们进一步深入了解和认识IP地址以及子网划分方法。而且某些专著上面关于IP子网规划时划分子网数为,这与实际应用当中不太相符;而另外有一些专著上面却是,可为什么会有两种不同的标准,这让初学者颇感困惑,因而产生了对IP地址及子网规划的错误认识。

另一方面,即便初学者没有认识上的误区,对于子网规划时大量的十进制数和二进制数的转换也颇感头痛。

本文主要针对上述问题,以IP地址的发展过程为基础,以大量实例的分析来向读者介绍IP地址,以求帮助读者走出IP地址理解的误区;另外,笔者经过长期的网络课程教学经验总结,提出一套以十进制数来划分子网的方法,希望能为有需要之人提供参考和借鉴。

2 IP地址编址的发展过程

2.1 早期IP地址

自从1969年美国国防部授权ARPANET进行互联网的试验,就宣告了互联网的诞生,IP地址也随之启用。开始时,由于主机数量很少,IP地址主要用于区分不同主机,人们对IP地址的使用相当自由。但随着主机的增多,这种现象的很多弊端也显露出来,如路由表过大、IP地址管理混乱等。随着许多分类协议逐步被推出,这种现象也在逐渐改观,这阶段使用的IP地址可称为早期IP地址。

2.2 分类的IP 地址

为了解决IP地址存在的上述问题,使IP地址能够适应不同网络规模的需求,在1981年就通过了相应的标准协议,这个标准将IP地址进行了分类。每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。1982年,IPv4标准的确定,将IP地址扩展为32位二进制的格式。

两级的 IPv4地址可以记为:

IP 地址 ::= { , }

根据网络号和主机号所占位数的不同,以及第一字节前几位的不同,将IPv4的地址分为A、B、C、D、E五类,如图1。

在五类地址中,实际上只有A、B、C三类是用以分配给主机使用的,另外,主机号为全0或全1的地址分别表示网络地址和广播地址,也是不作分配的。分类IP地址虽然比早期的IP地址有了很大的进步,但这种分类IP地址仍然存在以下问题:

1)IP 地址空间的利用率有时很低。

2)给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。

3)两级的 IP 地址不够灵活。

2.3 三级子网编址

针对两级IP地址的缺陷,1985年专家们提出了三级分类方案. 即拿出原本用于主机位的若干位做子网位, 即一个IP地址包括三部分:net―id,subnet―id和host―id,这种做法叫划分子网(subnetting) 。划分子网的标准便成为因特网的正式标准协议。三级IP地址结构定义为:

IP地址 ::= {, , }

为了识别IP地址的网络号、子网号、主机号,引入了子网掩码的概念。子网掩码也由32位二进制数组成,其中网络号和子网号为全“1”,主机号为全“0”。用子网掩码判断IP地址所属的网络地址的方法是用IP地址与相应的子网掩码进行“AND”运算。为了描述这个问题,下面将用示例进行说明:

【示例1】:有一个C类IP地址为192.9.200.15,其默认的子网掩码为255.255.255.0。则它的网络号可按如下步骤得到:

1)将IP地址192.9.200.15和子网掩码255.255.255.0转换为二进制;

2)将两个二进制数逻辑与(AND)运算后,结果即为网络地址;

结果为192.9.200.0,即网络地址为192.9.200.0。

由于划分子网是向主机号部分借高位来进行的,因此在进行子网号计算时,我们也要按照二进制高位的权重计算。例如一个C类地址借3位划分子网,则三位子网位表示的子网号如表1所示:

表1 借3位划分子网的子网号

根据子网划分标准RFC950中,不能使用二进制全0或全1作为子网标识,如上表子网号为0和224的将不能使用。因此,划分子网数时利用公式:子网数=2n-2(n为借的位数)来计算,而计算各主机数则用公式:主机数=2m-2 (m为主机位的位数)。

划分子网虽然在一定程度上解决了早期的分类IP地址利用率低的问题,但是由于在划分子网时为全0和全1的子网号不能用,以及每个子网的子网地址及广播地址也不能分配等问题,划分子网实际上仍然存在地址流失的问题。另外,对于像B类地址的分配,很少公司能够具有容纳65534台主机的规模,无论如何划分子网也无法对B类地址充分利用。

2.4 无分类编址(CIDR)

为了解决三级IP地址存在的问题,1987 年提出的RFC 1009标准就指明了在一个划分子网的网络中可同时使用几个不同的子网掩码。使用变长子网掩码 VLSM (Variable Length Subnet Mask)可进一步提高IP地址资源的利用率。CIDR 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。IP 地址从三级编址又回到了两级编址,其格式定义为:

IP地址::= {, }

CIDR使用“斜线记法”(slash notation又称为CIDR记法)来表示一个IP地址构成,即在IP地址后面加上一个斜线“/ ”,然后写上网络前缀所占的比特数(这个数值对应于三级编址中子网掩码中比特 1 的个数)。CIDR 将网络前缀都相同的连续的 IP 地址组成“CIDR地址块”。为了说明“地址块”的概念,下面我们看一个例子:

【示例2】:试计算一个地址块128.14.32.0/20的最小地址和最大地址。

由于采用了20位的网络前缀,所以主机号用12位二进制表示。因此,这个地址块可以用表2来表示:

其中,上表中方框内相同的部分即为网络前缀;主机号由于不能为全0或全1,所以最小可用IP地址就为“10000000 00001110 00100000 00000001”即128.14.32.1,最大可用IP地址即为“10000000 00001110 00101111 11111110”即128.14.47.254。

值得一提的是,RFC1812标准提出以前,子网号是不能为0或1的,并且至少要有两位长。但在一个CIDR领域,子网号就是网络前缀的一种延伸。如果没有前缀,那么子网号也就不存在了。从CIDR观点来看,这种对子网号的限制是没有意义的,可以安全地忽略。因此,在CDIR领域进行子网划分时,计算子网数时就要用以下公式: (n为借的位数);而主机数的计算和三级IP地址计算主机数相同。

3 传统的划分子网方法

为了更具体说明问题,下面利用一个实例来说明划分子网的方法(非CIDR领域):

【示例3】:如果需要将一个C类网络193.71.56.0划分4个可用子网,每个子网要求20台主机。请写出各子网地址、可用IP地址范围、广播地址。

步骤1:确定要向主机借的位数:

利用公式:2n-2≥sub(其中n和sub分别表示借的位数和子网数)求出n值。本例中,求出n≥3,即至少借3位才能满足划分为4个子网的要求。

步骤2:确定子网的主机数需要位数:

利用公式: 2p-n-2≥host(其中,p表示二级IP地址中主机位的位数,n和host分别表示借的位数和每个子网的主机数),本例中,p=8,host=20,求得n≤3,即最少要保留5位主机位才能满足每个子网20台主机的要求。因此,由上述两个步骤可以确定借3位作为子网号。

步骤3:确定子网掩码:

本例子网掩码为:11111111.11111111.11111111.11100000,即为255.255.255.224。

步骤4:制定表格写出网络地址、可用IP地址范围、广播地址

按照表1介绍的方法,借3位划分的子网号分别为:000,001,010,011,100,101,110,111,其中000和111不可用。则第一个可用子网为001,即193.71.56.32。依此类推,193.71.56.64、193.71.56.96、193.71.56.128、193.71.56.160、193.71.56.192也是子网地址。接下来以第一个可用子网为例求可用IP地址范围及广播地址,如图2所示。

则第一个可用子网的可用IP地址范围: 193.71.56.33~193.71.56.62,广播地址为:193.71.56.63。同理可求得其他各子网的网络地址、可用IP地址范围、广播地址,将所求绘制成表格,如表3所示:

4 十进制快速划分子网方法

若使用【示例3】中步骤4的方法求得各子网的网络地址、可用IP地址范围、广播地址,也就是利用二进制的转换来计算,其工作量是显而易见的。下面,笔者将介绍一种快捷的方法通过十进制数运算来实现。为了描述方便,以下论点都将以B、C类IP地址为对象,而A类地址大家可由此论文自我推导。

我们注意到,一个子网的网络地址、可用IP地址范围及广播地址存在以下关系:

最小可用IP地址=网络地址+1(1)

最大可用IP地址=广播地址-1(2)

广播地址=下一个子网网络地址-1(3)

下面,我们来看看子网掩码和网络地址存在的关系:

【定义】:若将一个未划分子网之前的二级广播地址B和划分子网之后的子网掩码M作以下运算:B的网络号和M的对应位作“AND”运算,而B的主机号和M的对应位作减法运算,这里姑且将该方法称为“与差”运算,符号记为“&-”。(4)

例如【示例3】中,由步骤3求得子网掩码为255.255.255.224,则将193.71.56.255和该子网掩码进行与差运算:

若用 ,将其转换成二进制运算:

与差运算的结果为:192.71.56.31,而该地址刚好是第一个子网的广播地址,而该子网号由于为全0是不作分配的。实际上,当熟练应用与差运算之后,根本没有必要再转换成二进制运算,直接就可以用十进制数计算得到。

根据(3)、(4)式,易得:

第一个可用子网=(B &-M)+1(B&-M定义见(4))(5)

此例中,求得:

(192.71.56.255"&-"255.255.255.224)+1=192.71.56.32

所以,由(3)、(4)、(5)可知,

第一个可用子网ID=256-子网掩码最后一个不为255的字节值(7)

如【示例3】中,第一个可用子网ID=256-224=32。

另外,我们观察到【示例3】中步骤4所列表格中,所有子网的网络地址都是32的整数倍,这是为什么呢?其实道理非常简单,二进制数还有以下规律:

an2n+x+an-12n-1+x+…a22x+1+a12x=k2x (8)

(其中,n和k都为整数,a1 …an 为0或1,且至少有一值为1)

如:11100000(十进制数为224)是00100000(十进制数为32)的7倍,01000000(十进制数为64)是00100000的2倍等。因此,由(8)可知,

子网的网络ID=k*第一个可用子网ID(k=0, 1, 2, 3…i)(9)

其中,k*第一个可用子网ID≤2h-1-(h为未借位前的主机位数,n为借的位数,j为借位后主机位的第j+1位的权重,h, n, j均为已知。其实,不等式的右边即为最大的子网ID)。 (10)

例如一个C类网络192.168.1.0的子网掩码为255.255.255.192,则根据(7)、(9)、(10),各子网的网络分别为:0、64、128、192。此时,(9)式中k的值分别对应于0、1、2、3,为什么k=4不行呢?因为 (细心的读者将会留意到,该值就是借位之后的子网掩码中最后一个不为255的字节十进制数)。

对于B类地址,若借位出现跨字节的情况,则

例如一个B类网络172.16.0.0的子网掩码为255.255.255.192,则根据(7)、(9)、(10)、(11),其子网ID分别为:0.0,0.64,0.128,0.192,1.0,1.64…255.0,255.64,255.128,255.192。

5 利用十进制快速划分子网方法示例

下面,我们将用上面介绍的十进制快速划分子网的方法来解决【示例3】的问题:

步骤1,2,3同【示例3】。

步骤4中,首先我们根据(7)求得第一个可用子网ID为:256-224=32;

再根据(9)、(10)可知各子网ID分别为0,32,64,96,128,160,192,224,填入表格相应栏中;

又由(3)式可知各子网的广播地址分别为:31,63,95,127,159,191,223,255,填入表格相应栏中;

再由(1)、(2)便可求得各子网的可用IP地址范围,填入表格相应栏中。

最后,去掉子网号为0和224的以外,其余6个子网都为可用子网。

6 总结

IP地址的发展过程见证了IP地址规划方法的演变,本文的撰写希望能够帮助读者走出对IP地址认识的误区。同时,笔者所介绍的十进制快速子网规划法如若能够熟练掌握,在IP子网规划问题上,将为读者节省大量数制转换的时间,甚至可以利用口算就能进行子网规划。

参考文献:

[1] 林生.计算机网络与因特网[M].机械工业出版社,2005.

[2] 吴功宜.计算机网络[M].北京:清华大学出版社,2003.

[3] 谢琼,夏宇.IP地址资源不足的解决方法[J].贵州工业大学学报:自然科学版,2001.

[4] 张成霞,赵培元.通过实验透析子网掩码的作用[J].潍坊教育学院学报,2005(4).

[5] RFC文档[EB/OL].,2004-09.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:多目标演化算法 下一篇:和谐思想在计算机组成原理课程教学改革中的研...