2.5 IP地址***
IP 地址部分在 CCNA 考试中占了相当大一部分比重。本节主要介绍二进制和十进制的转换、IP地址的分类、IP子网划分、子网掩码、公有地址和私有地址等。
IP地址是用来标识网络中一个通信实体的,比如一台主机,或者是路由器的某一个端口。而在基于IP协议网络中传输的数据包,也都必须使用IP地址来进行标识,如同我们写一封信,要标明收信人的通信地址和发信人的地址,邮政工作人员通过该地址来决定邮件的去向。
在计算机网络里,每个被传输的数据包也要包括一个源IP地址和一个目的IP地址。当该数据包在网络中进行传输时,这两个地址要保持不变(有网络地址转换和代理的情况例外,本书后面会介绍到网络地址转换技术),以确保网络设备总能根据确定的IP 地址,将数据包从源通信实体送往指定的目的通信实体,以及数据包从目的通信实体返回源通信实体。
开始介绍IP之前,首先看一台上网主机需要配置TCP/IP属性中的哪些参数?
打开“Internet协议(TCP/IP)属性”窗口,如图2-5-1所示,一台上网的主机一般需要配置IP地址、子网掩码、默认网关、DNS服务器地址等参数。前面已经介绍了,DNS服务器用来进行域名解析,负责把域名解析成对应的IP地址,可是IP地址、子网掩码、默认网关等参数主要起到什么作用呢?本节将对这些参数的用途进行详细说明。
图2-5-1“Internet协议(TCP/IP)属性”配置窗口
2.5.1 二进制和十进制间的转换***
IP地址使用32位二进制数格式,为方便记忆,通常使用以点号分隔的十进制数来表示,如IP地址202.119.248.65对应的二进制数是11001010.01110111.11111000.01000001。了解IP地址的第一步就是掌握二、十进制间的转换。
1.二进制转换到十进制
给出一个二进制数(1101)2,该二制数所对应的十进制是1×20+0×21+1×22+1 ×23=1+0+4+8=11。IP地址包含32个比特,每8个比特用1个十进制数表示,则每1个十进制数最大是(11111111)2=1+2+4+8+16+32+64+128=255,从这里可以看出,IP 地址的十进制数表示中,不应该出现超过255的数值,从上面的计算中,可以看出在8位二制数的表示中,最高位的1 表示十进制数的128,次高位的1 表示十进制数的64,再其次是32……,最低位的1表示十进制数的1。根据这种对应,多数情况下,不需要计算,就可得出二进制数对应的十进制数,譬如(10000001)=128+1=129。
2.十进制转换到二进制
很多读者都害怕十进制数到二进制数的转换,因为“除2取余”的方法实在是太麻烦了且容易出错。这里介绍一种简单不易出错的方法,这里姑且称作“凑数字法”,就是把IP地址中对应的十进制数凑成128,64,32,16,8,4,2,1等数字的组合,然后从高位到低位,如果出现这个数字就填1,没有出现的数字填0,最后得出的8位二进制组就是该十进数对应的二进制数。譬如要把十进制数的130和49转换成二进制数,130=128+2=(10000010)2,49=32+16+1=(00110001)2。读者可能会担心,要是出现个大的十进制数怎么转换呀?不要忘了,十进制数表示的IP地址,最大不会超过255。这个方法够简单吧,且不容易出错,读者只要稍加练习,即可熟练掌握。
2.5.2 IP地址分类***
一个 IP 地址主要由两部分组成:一部分用于标识该地址所从属的网络号;另一部分用于指明该网络上某个特定主机的主机号。网络号由因特网权力机构分配,主机地址由各个网络的管理员统一分配。因此,网络地址的唯一性与网络内主机地址的唯一性确保了IP地址的全球唯一性(其中保留给某些网络使用的私有地址段除外)。
为适应不同规模的网络,IP地址空间被划分为五个不同的地址类别,即A、B、C、D和E类,如表2-5-1所示,其中A、B、C三类最为常用,D类用于组播,E类用于科研。
表2-5-1 IP地址分类表
*规定A类中的0不允许使用,127作为测试TCP/IP协议的环回地址,也不可以使用,因此A类实际可用的地址是1~126。
1.A类地址
A类地址用来支持超大网络,A类IP地址的前8位二进制表示网络号,后24位二进制表示主机号。A类地址很好识别,只需把第一个十进制数换算成二进制数,如果最高位是“0”,则是A类地址,但有两个特例,0和127两个数被保留,不属于A类地址。A类地址的范围从1~126,全球只有126个A类网络。如果申请到一个A类地址就相当于申请到224个IP地址,等于16 777 216个。
2.B类地址
B类地址用来支持中等网络,B类IP地址的前16位二进制表示网络号,后16位二进制表示主机号。B类地址很好识别,只需把第一个十进制数换算成二进制数,如果前两位是“10”,则是B 类地址,范围从(10000000)2=128 到(10111111)2=191。全球有214个B类网络。如果申请到一个B类地址就相当于申请到216个IP地址,等于65 536个。
3.C类地址
C类地址用来支持小型网络,C类IP地址的前24位二进制表示网络号,后8位二进制表示主机号。C类地址很好识别,只需把第一个十进制数换算成二进制数,如果前三位是“110”,则是C类地址,范围从(11000000)2=192到(11011111)2=223。全球有221个C类网络。如果申请到一个C类地址就相当于申请到28个IP地址,等于256个。
4.D类地址
D类地址用来支持组播,也称组播地址。组播地址不区分网络号或主机号,就是单一的网络地址,用来转发目的地址为预先定义的一组 IP 地址的分组。因此,一台工作站可以将单一的数据流同时传送给多个接收者。D类地址也很好识别,只需把第一个十进制数换算成二进制数,如果前四位是“1110”,则是D类地址,范围从(11100000)2=224到(11101111)2=239。全球有228个组播地址。
5.E类地址
E 类地址用于科研,因此,Internet上没有E类地址。E类地址也很好识别,只需把第一个十进制数换算成二进制数,如果前四位是“1111”,则是E类地址,范围从(11110000)2=240到(11111111)2=255。
2.5.3 保留IP地址***
注意表2-5-1中每个网络中可容纳的主机数都是申请的IP地址减去2,这是因为有一些地址被保留,不能分配给网络中的设备使用。每个网络中保留的两个IP地址是:
● 网络地址:网络位不变,主机位全0的IP 地址代表网络本身,不能分配给某个网络设备使用。
● 广播地址:网络位不变,主机位全1的IP 地址代表本网络的广播,也不能分配给某个网络设备使用。发往广播IP地址的数据包被本网络中所有主机接收。
譬如,默认C类网络192.168.1.0中,IP地址的范围从192.168.1.0到192.168.1.255,排除网络地址192.168.1.0和广播地址192.168.1.255,192.168.1.0网络中可以使用的IP地址数是254个。默认B类网络172.16.0.0中,IP地址的范围从172.16.0.0到172.16.255.255,排除网络地址172.16.0.0和广播地址172.16.255.255,172.16.0.0网络中可以使用的IP地址数是65536-2=65534个,这里特别要提醒的是172.16.0.255、172.16.1.255……172.16.254.255并不是广播地址,因为B类网络地址的主机位有16,只有16位全是1才是广播地址。
本节的后面部分会介绍到 IP 子网划分,请牢牢记住一点很重要,即:主机位全0的是网络地址,主机位全1的是广播地址。
2.5.4 公有IP地址和私有IP地址**
公有IP地址是唯一的,因为公有IP地址是全局的和标准的,所以没有任何两台连到公共网络的主机拥有相同的IP地址。一般宽带接入用户可以花些费用,向ISP运营商申请公有的IP地址,拥有公有IP地址后,就可以向因特网提供服务了。
随着 Internet 的快速增长,公有 IP 地址几近枯竭。为解决这个问题,提出了 VLSM (Variable Length Subnet Masks,变长子网掩码)、CIDR(Classless Inter-Domain Routing,无类别域间路由)以及IPv6等机制。有关VLSM、CIDR和IPv6将在本书后面的章节中讨论。
另一种更行之有效的方法是使用私有地址。如前所述,Internet 主机需要一个全局唯一的IP地址。可是私有网络不连接到Internet上,它可以使用任何有效的IP地址。如果私有网络需要连接到Internet上,可以使用代理或具有NAT(Network Address Translation,网络地址转换)能力的设备进行转换,把私有IP地址转换成合法的公有IP地址,再访问Internet。
原则上讲,私有网络可以配置任何有效的 IP 地址,可有一个问题出现了,如果私网中配置的是202.119.248.0这个C类网络,该私有网络将无法访问南京工业大学的Web主页,因为南京工业大学Web服务器的IP地址是202.119.248.65,私有网络的主机将会在局域网中寻找202.119.248.65,而不会把数据包发往正确的Internet。为了避免出现这种情况, RFC1918留出3块专有的IP地址空间(1个A类地址段,16个B类地址段,256个C类地址段,如表2-5-2所示)作为私有的内部使用的地址。在这3块范围内的IP地址不会被Internet的路由器转发,因为Internet上的路由器均没有配置这些IP地址的路由,如果有去往这些私有IP地址的数据包将被路由器丢弃。
表2-5-2 私有IP地址
2.5.5 IP子网划分***
在讲述子网划分之前,先来看一个实例,如图2-5-2所示,4台计算机接在一个HUB (集线器)上,IP和子网掩码配置如图中所示。图中的“/24”表示计算机IP地址的网络位有24位,主机位是8位(32-24=8,相当于子网掩码是255.255.255.0,CCNA考题中经常用这种格式表示子网掩码)。图中哪些计算机之间可以通信?判断的依据是什么?如何才能让它们全部都可以互访?
图2-5-2 计算机互访图
答案是PC1(Personal Computer,个人计算机)和PC3为一组,PC2和PC4为一组,组内计算机之间可以通信,组间计算机之间不能通信。判断的依据是:同一子网的计算机可以直接通信,不同子网的计算机不可以直接通信。处在不同子网中的计算机间如需通信,需要通过一个三层设备,也就是有路由功能的设备。前面已经介绍过集线器处在物理层,不具有网络层的功能,不能实现不同网络间的互连。
那么如何判断在不在同一个子网呢?先把 IP 地址和子网掩码转换成二进制数,然后进行“与”运算,也就是二进制数的按位取小运算,得出一台计算机所在的网络号,如果两台计算机的网络号相同,就说明它们处在同一子网;如果网络号不同,就说明它们处在不同子网。把每台计算机的IP地址与子网掩码进行按位“与”运算,我们得出PC1的网络号是192.168.1.0/24,PC2的网络号是192.168.2.0/24,PC3的网络号是192.168.1.0/24, PC4的网络号是192.168.2.0/24,PC1和PC3处在同一子网,PC2和PC4处在同一子网。如果192.168.1.0网络中的计算机需要访问192.168.2.0网络中的计算机,那么就需要通过一个三层设备,而HUB处于OSI七层模型中的第一层,即物理层,不具备路由功能,无法为不同子网中的计算机提供路由功能。
如何才能让4台计算机相互之间都可以通信呢?方法有很多种,这里简单列举3种。
● 方法一:修改PC2、PC4的IP地址为192.168.1.3、192.168.1.4,这样4台计算机就处在同一子网中,相互之间可以直接通信。这种方法有一定的局限性,假如192.168.1.0/24网中已经有254台计算机,如果又有新的计算机加入,192.168.1.0/24网段中所有有效的IP地址都被分配出去,新加入的计算机将无IP地址可用,此时就需使用方法二了。
● 方法二:修改4台计算机的子掩码为“/22”,即255.255.252.0,这样4台计算机的网络号都是192.168.0.0/22,处在同一个子网中,这样的子网中,网络位有22位,主机位有10 位,可以容纳的主机数为210-2=1022 台,即从192.168.0.1 到192.168.3.254。这种方法也有不足之处,因处在同一个子网中的计算机处在同一个广播域,一是存在安全隐患;二是大量广播存在,影响通信效率;三是故障排除困难,如果同一个子网中的计算机数量过多,可以考虑采用第三种方法。
● 方法三:把集线器换成三层交换机,并把接PC1、PC3的交换机端口划到一个VLAN (Virtual Local Area Network,虚拟局域网,在本书后面章节会更详细深入地讨论VLAN的配置),并给此VLAN分配IP地址192.168.1.254,把PC1和PC3的网关设成192.168.1.254。把接PC2、PC4的交换机端口划到另一个不同的VLAN,并给此VLAN分配IP地址192.168.2.254,把PC2和PC4的网关设成192.168.2.254。这样4台计算机之间也可相互通信了。三层交换机可以把两个子网连通起来,三层交换机有两个VLAN,每个VLAN都是一个广播域,两个VLAN中的广播互不影响。第三种方法可以有效地克服第二种方法的不足,缺点就是增加了硬件设备的投资。
在做子网划分的时候有一点需要注意,主机位全“0”、全“1”的 IP 地址都不可以使用,全“0”的是子网地址,全“1”的是子网广播地址,如192.168.1.0/24和192.168.1.255/24这两个 IP 地址就分别代表网络地址和广播地址,都不可以配置给计算机使用。192.168.0.0/22和192.168.3.255/22这两个IP地址也分别代表了网络地址和广播地址,也不可以配置给计算机使用,而192.168.1.0/22、192.168.2.0/22、192.168.3.0/22、192.168.0.255/22、192.168.1.255/22、192.168.2.255/22 则可以分配给计算机使用。192.168.1.0/24 网络中可用的IP地址数是256-2=254个,192.168.0.0/22网络中可用的IP地址数是1024-2=1022个,即每个子网中可用的IP地址数量是:2 主机位数-2。
1.为何要划分子网
在讲述子网划分之前,先来分析一下为何要划分子网?因为划分子网主要有下列好处:
● 缩减网络流量,优化网络性能。在前面介绍的方法三中,大家知道在不同子网中的广播地址互不相同,而在相同子网中的广播地址是相同的。试想一下,如果申请到一个B类的地址173.1.0.0/16,该子网中可以容纳的主机数是65534台,6万多台的计算机在同一个子网中,广播量非常巨大。通过三层交换机或路由器把6万多台计算机隔离到不同的子网中,大多数的流量将会被限制在本地子网中,而只有那些被标明发送到其他网络的流量,才会通过路由器或三层交换机的网络层。路由器和三层交换机的 VLAN 创建了广播域,创建的广播域越多,其广播域的规模就越小,并且在每个网段上的无关流量也就会越低。
● 简化管理。与一个巨大的网络相比,在一组较小的互联网络中,判断并孤立网络所出现的故障会容易很多。
● 增加网络安全性。试想一下,如果申请到一个 C 类的地址193.1.1.0/24,公司内部的多个部门共同使用这个C类地址,相互之间处在同一个广播域,通过使用黑客工具,可以很容易地截获其他用户之间的通信,存在很大的安全隐患,且不容易实现访问控制。通过划分子网,让路由器互连不同的子网,在路由器上配置ACL(Access Control List,访问控制列表)限制不同网络之间的访问权限,提高网络的安全性。
2.如何创建子网
例1:假如某单位申请到了一个C类的网络地址199.1.1.0/24,该单位共有5个部门,每个部门最多只会有28 台计算机。为了增强安全性,使用路由器来限制部门之间只能进行有限的访问。问子网掩码设成多少比较合适?每个部门使用的IP地址范围是多少?
分析C类地址的特征,24位网络位,8位主机位,因为网络位是由IP地址分配商提供,固定不变的,单位内部可以调整的只能是主机位。如果从8位主机位中借出一位来延长网络位,只能划分成21=2 个子网(有些老式系统不支持全“0”和全“1”的子网,也就是子网位是全“0”和全“1”的网络号。在这种情况下,如果是借1位,将没有一个子网可用,但新的系统基本都不存在这个限制,思科路由器上可以在全局配置模式下使用“Router(config)#ip subnet-zero”命令让路由器支持全“0”和全“1”的子网,使用“Router(config)#no ip subnet-zero”命令让路由器不支持全“0”和全“1”的子网。在CCNA考试中,在没有特别声明是否支持全“0”和全“1”子网的情况下,默认是不支持的,有关这一点,考生要特别注意),满足不了5个部门的需要;借2位,可以划分成22-2=2个子网,还是满足不了5个部门的需要;借3位,可以分成23-2=6个子网,可以满足5个部门使用的需要。网络位本来有24位,又从主机位借走了3位作为子网位,还剩下5位主机位,每个子网可容纳的主机数量是25-2=30,大于每个部门最多的主机数量28;借4位,虽然子网数量满足了,可主机位只剩下4位,每个子网中最多只能有24-2=14个可用IP地址,还要去除网关占用的一个IP地址,每个子网最多只能容纳13台计算机,小于每个部门最多有28台计算机的需求。故本例的正确划分方法只有一种,从主机位中借出3位作为子网位,则网络位变成了24+3=27位,换成十进制就是255.255.255.224。
本例中,通过从一个C类地址的主机位中借出3位,分成了如下8个子网:
000
001
010
011
100
101
110
111
即:
199.1.1.0/27
199.1.1.32/27
199.1.1.64/27
199.1.1.96/27
199.1.1.128/27
199.1.1.160/27
199.1.1.192/27
199.1.1.224/27
而单位只需有5个子网,默认不使用全“0”和全“1”的子网,即不使用199.1.1.0/27和199.1.1.224/27的子网,从剩下的6个子网中拿出前5个子网,最后的1个子网预留给将来的升级使用,如果单位增加了新的部门将可以使用该子网。第一个可用子网199.1.1.32/27的IP地址范围从199.1.1(. 00100000)2到199.1.1(. 00111111)2,即从199.1.1.32到199.1.1.63,共包括32个IP地址。其中199.1.1.32/27的主机位全“0”,是网络地址,也是本子网中第一个IP地址,不可以使用。199.1.1.63/27的主机位全“1”,是该子网的广播地址,也是本子网中最后一个IP 地址,不可以使用。假设每个子网都是把第一个可以使用的IP地址用作网关,则199.1.1.33配在路由器的接口上,充当本子网的默认网关。则本子网中主机可以使用的IP地址是从199.1.1.34到199.1.1.62,共29个。所有子网的IP地址范围、网络号、子网广播、网关、主机可用IP地址范围、网络掩码等,如表2-5-3所示。
表2-5-3 IP地址划分
本例中,计算机的IP地址、子网使用、路由器接口的配置等,如图2-5-3所示。
例2:一台计算机的IP地址和子网掩码是172.16.2.160/26,如何计算出该计算机所在的子网地址、子网广播地址、该子网中第一个可用的 IP 地址、该子网中最后一个可用的IP地址、该子网中共有多少个IP地址可用?
图2-5-3 子网的划分
如何对上述问题进行解答,许多行家一眼就能看出答案,但对于初学者却非易事,这里介绍几种解法,读者可以根据习惯任选一种。
解法一:图2-5-4给出了一个通用的解法,虽然有点烦琐,但却易于理解,不会出错,随着对“与”运算的了解,还是可以再做精简的。下面对上述9个步骤解释如下:
图2-5-4 子网的计算
步骤1:把 IP 地址换成二进制数,不要使用一般常用的“除2取余”法,特别容易搞错。建议使用前面介绍过的“凑数字法”。最后会发现,本例中的172.16.2是没有必要换成二进制数的,因为它们是与255.255.255进行与运算,任何数与255与运算的结果一定是它本身。
步骤2:把子网掩码换成二进制数。
步骤3:在子网掩码二进制数表示法中“1”的结束处,画一条竖线,竖线左边表示的是网络位,竖线右边表示的是主机位。本例中网络位是26位,主机位是6位。授课中,有的学生可能会问,如果“1”的位数不连续怎么办,事实上网络位在前,主机位在后,网络位是连续的,不会出现网络位与主机位交叉的情况。
步骤4:主机位全是“0”的地址是子网地址。
步骤5:主机位全是“1”的地址是广播地址。
步骤6:子网地址加1得到的是本子网中第一个可用的IP地址。
步骤7:子网广播地址减1得到的是本子网中最后一个可用的IP地址。
步骤8:把IP地址在竖线左边的网络位部分照抄下来,把各个地址部分补充完整。
步骤9:把二进制数转换成十进制数,就得出了本子网地址是172.16.2.128,本子网广播地址是172.16.2.191,本子网中第一个可用的IP 地址是172.16.2.129,本子网中最后一个可用的IP地址是172.16.2.190,本子网可用的IP地址数量是26-2=62个。
解法二:考虑到计算机172.16.2.160/26所处的子网是一个比C类地址还小的地址空间,可以想象成是一个C类地址被子网划分。每个子网中的IP地址数是26=64,被分成的4个子网的IP地址范围是:
172.16.2.0~63
172.16.2.64~127
172.16.2.128~191
172.16.2.192~255
172.16.2.160落在第三个子网范围172.16.2.128~191中,该子网中第一个IP地址是网络号,即172.16.2.128;该子网中最后一个 IP 地址是子网广播地址,即172.16.2.191;该子网中第一个可用的IP地址是子网地址加1,即172.16.2.129;该子网中最后一个可用的IP地址是广播地址减1,即172.16.2.190;该子网中可用的IP地址数是26-2=62个,即IP地址范围中排除子网地址和广播地址。
例3:在图2-5-5中,路由器R1、R2、R4上均有4个C类的地址,路由器R3能学到所有的路由条目(有关路由,本书后面有专门的章节介绍,这里关心的只是IP 地址计算问题)。R3 的路由表中有12+3(路由器间的互连网段)=15 个条目,过多的路由表条目会占用更多的内存,耗用更多的CPU,还会带来网络的不稳定性。可以使用路由汇总技术来减小R3路由表的大小。
图2-5-5 路由汇聚
把所有明细路由条目转换成二进制形式,把共同的部分取出来,即可实现路由的汇总。这里以R1上的4个条目为例,按图2-5-6所示进行操作:
步骤1:①②③④ 4个步骤把4个明细路由条目转换成二进制形式。
步骤2:⑤ 在所有明细条目共同部分的后面画一条竖线。
步骤3:⑥ 取出共同的部分,后面的位补“0”,这里是191.1.0.0。再数一数竖线左边的位数是22,得出汇总后的网络地址是191.1.1.0/22。同理可以得出去往R2的路由汇总条目是191.1.4.0/22,去往R4的路由汇总条目是191.1.8.0/22。
步骤4:在R3上取消明细条目,只保留汇总后的条目(学完路由部分,读者就可以动手配置了)。路由表条目从汇总前的15条变成汇总后的3(汇总后的路由)+3(路由器中的互连网段)=6条,路由表大大减小。
图2-5-6 路由汇总算法