1.4 认识IP地址
以太网利用MAC地址(一种物理地址)来标识网络中的一个节点,两个以太网节点之间的通信需要知道对方的MAC地址来封装以太网数据帧。但是,以太网并不是唯一的物理网络,还有电话网、X.25网、帧中继网等,这些物理网络使用不同的技术,物理地址的长度、格式和表示方式都不相同,在网络互联时,采用物理地址是不现实的。而IP协议作为一种网络互联协议在网络层上将各种物理网络地址统一为IP地址,采用统一的地址格式来屏蔽各种物理地址的差异,构成一个逻辑网络。
目前正在使用的IP协议版本是1981年9月制定的IPv4。IPv4规定IP地址用32位二进制数表示,由网络号和主机号两部分组成,用于标识连接到物理网络中的某个对象。一个对象连接到几个物理网络就需要几个IP地址。
IP地址不同于以太网物理地址(MAC),IP地址是一种层次结构的地址,地址结构中包含位置信息,在一个大型网络中可以很快定位。而MAC地址不包含位置信息,只是唯一标志网络中的一个站点。在一个大型网络中通过查找所有计算机的MAC地址来确定一台计算机是不可想象的。但IP地址不能代替MAC地址,IP地址是网络层定义的逻辑地址,是三层地址。而MAC地址是数据链路层地址,是直接对应网络物理接口的二层地址。数据最终是要经过网络接口到达目标节点的。
根据RFC791的定义,IP地址由32位二进制数组成(四个字节),如11000000 00000001 00000001 00001001是一个IP地址。通常用点分十进制记号法来表示。每8位二进制数(一个字节)转换成一个十进制数,十进制数之间用圆点分隔。如前面的IP地址可表示为192.1.1.9。
(1)IP地址被分为五大类,可根据网络规模选择不同类别。
为了给不同规模的网络地址分配提供灵活性,IP地址的设计者将IP地址空间划分为五个不同的地址类别:A类、B类、C类、D类和E类,如图1.10所示。
图1.10 分类IP地址
各类地址所容纳的网络数和主机数如表1.1所示。
表1.1 各类地址容纳的网络数和主机数
其中A、B、C三类最为常用,A类地址用第一个字节代表网络地址,后三个字节代表节点地址。B类地址用前两个字节代表网络地址,后两个字节表示节点地址。C类地址则用前三个字节表示网络地址,第四个字节表示节点地址。
网络设备根据IP地址的第一个字节来确定网络类型。A类网络第一个字节的第一个二进制位为0;B类网络第一个字节的前两个二进制位为10;C类网络第一个字节的前三位二进制位为110。将第一个字节转换成十进制,可见A类网络地址以0~127开头,B类网络地址以128~191开头,C类网络地址以192~223开头。以224~239开头的称为D类,是组播地址;以239以上开头的网络号被保留。
分类地址易于管理,但浪费严重。即使只有4台计算机的局域网也要分配一个C类地址。而一个C类地址有可用地址254个,剩余的250个IP地址,其他网络不能用,这就行成了浪费。
(2)为避免浪费地址,可借用主机位划分相同大小子网。
为了提高IP地址的使用效率,出现了子网划分技术,借用主机编号的n位,将一个网络再划分成2n个子网,这样划分的子网大小一样,如图1.11所示。
图1.11 子网划分
采用借位的方式,从主机位最高位开始借位变为新的子网位,所剩余的部分则仍为主机位。为此,必须打破传统的8位界限,从主机地址空间中“借来”几位作为子网地址。这使得IP地址的结构分为三部分:网络号、子网号和主机号。
引入子网概念后,网络位加上子网位才能全局唯一地标志一个网络。把所有的网络位用1来标识,主机位用0来标志,就得到了子网掩码。如子网掩码11111111 11111111 11111111 11000000转换为十进制之后为:255.255.255.192。同一网络中的不同子网用子网掩码来区分,子网掩码(mask)是将IP地址中对应网络标志码的各位取l,对应主机标志码的各位取0而得到的。如果两台主机的IP地址和子网掩码的“与”的结果相同,则这两台主机在同一个子网中。
引入子网掩码的概念后,A、B、C三类网络默认的子网掩码分别为255.0.0.0,255.255.0.0, 255.255.255.0。
在作IP子网地址规划时分两步进行:
第一步,确定需要的IP网段数;
第二步,确定子网掩码。
首先,确定IP网段数。在确定了IP网段数后,再确定从主机地址空间中截取几位才能为每个网段创建一个子网络号。方法是计算这些位数的组合值。比如,取两位,有四种组合(00、01、10、11),取三位有八种组合(000、001、010、011、100、101、110、111)。
如果我们有4个需要25个地址的网段,可以用一个C类网络(202.112.14.0)来划分子网。需要截取主机地址的前3位作为子网络地址,与之对应的子网掩码就是255.255.255.224 (11111111.11111111.11111111.11100000)。这样可以将一个C类网络划分出8个子网,如表1.2所示。需要4个网段只要使用表1.2中的4个子网就可以了。
表1.2 借用3位主机位为C类网络202.112.14.0划分子网
有些早期的路由协议不支持子网划分,如RIPv1、IGRP。
这种固定子网掩码长度的子网划分方法虽然比不划分子网经济,但由于各个子网大小一样,使用中还是有IP地址浪费。更经济的方式是使用可变长子网掩码。
(3)采用可变长子网掩码可划分不同大小子网,比借用主机位划分子网有更好的灵活性。
可变长子网掩码(Variable Length Subnet Mask,VLSM)是一种产生不同大小子网的网络分配机制,指对同一个主网络在不同的位置使用不同的子网掩码,更有效地分配IP地址。可变长子网掩码通过改变子网掩码中“1”的个数,来划分不同大小的子网。
VLSM采用斜线加子网掩码中“1”的个数来表示可变长子网掩码。如“/29”表示子网掩码中“1”的个数为29,子网掩码为255.255.255.248。
例如,在一个C类网络192.168.1.0中,A、B两台计算机属于一个子网,只需要使用子网192.168.1.0/30内的2个地址就够了,子网掩码为255.255.255.252;另六台计算机属于另一子网的,可使用子网192.168.1.8/29内的6个地址,子网掩码为255.255.255.248;还有14台属于另一个子网,可采用子网192.168.1.16/28内的地址,子网掩码为255.255.255.240。其他未分配的地址可以分配给其他子网。这样,通过采用可变长子网掩码技术,在一个C类网中,使用了多种子网掩码,最大限度地节约了地址。
(4)无类别域间路由技术取消了IP地址分类结构,可进行地址聚合,减少路由表数量。
无类别域间路由(Classless Inter-Domain Routing,CIDR)的基本思想是取消IP地址的分类结构,不按A、B、C来分类。CIDR支持地址聚合,将多个地址块聚合在一起生成一个更大的网络,以包含更多的主机。CIDR支持路由聚合,能够将路由表中的许多路由条目合并为成更少的数目,因此可以限制路由器中路由表的增加,减少路由通告。
采用路由聚合技术,可以将多个连续的网络地址聚合成一个更大的网络地址。如图1.12所示,其示意了8个C类网络地址在取消分类后聚合成一个超网地址的情形。路由器如果不支持CIDR技术,那么它需要保存8条去往这8个C类网的路由,如果支持CIDR技术,只需要一条去往192.200.8.0/21的路由就可以了。
图1.12 地址聚合示意图
CIDR利用“网络前缀”取代分类。前缀长度从13到27位不等,而分类地址A类8位、B类16位、C类24位。这意味着地址块可以成群分配,前缀长度27位时,每个/27地址群中主机数量既可以少到32个;前缀长度13位时,每个/13地址群中主机数量也可以多到50万个以上。
因为有类地址在CIDR中有着类似的地址群,两者之间的转移就相当简单。所有A类网络可表示成/8地址群。B类网络可表示成/16地址群,C类网络可表示成/24地址群。
为了能够达到地址聚合的目的,需要在地址规划时刻意按照2n模式进行,这样既规范又支持路由归并。所谓2n模式,就是分配的网段是2的整数倍个连续可归并地址。例如,将192.168.0.0/24和192.168.1.0/24分配给一个部门,将192.168.2.0/24和192.168.3.0/24分配各另一部门,将192.168.4.0/24~192.168.7.0/24分配给各某个部门。这样的地址便于地址聚合,地址聚合过程如图1.13所示。
图1.13 地址聚合过程
从示意图可以看出,要对两个网络地址进行聚合,必须具有相同的高位地址比特,地址分配必须是连续的。