1
计算机网络技术理论与实践
1.2.1.5 1.1.5 Internet网络地址简介

1.1.5 Internet网络地址简介

Internet是当前应用最为广泛的互联网,也是我们能够频繁接触到的互联网络。在本书中,大部分的网络技术都是基于Internet网络的。因此,我们必须了解Internet网络中用来标识各个设备和网络终端的地址技术。Internet网络中采用的是TCP/IP协议栈,其中IP协议中的地址用于标识Internet网络中的每台主机,称为IP地址。IP协议当前包含了IPv6和IPv4两种协议,各协议中的地址策略也不相同,本书中所介绍的IP地址均为IPv4地址。

IP地址是32位的无符号二进制数。其中一部分是网络地址,用来标识主机所处的网络,一部分是主机地址,用来在该网络中标识主机。Internet网络中数据包在传输过程中利用目的主机IP地址中的网络地址来寻找目的网络,当数据包到达目的网络后再利用“网络地址+主机地址”来找到目的主机。

由于32位的二进制数非常不方便记忆和书写,为此,我们常常将32位IP地址中的每8个比特用其等效十进制数字表示,并且在这些数字之间加上一个点。这就是点分十进制记法(Dotted Decimal Notation)。

例1:

机器中存放的32位二进制的IP地址   11000000101010000000000100000001

每8位分割开            11000000 10101000 00000001 00000001

将每8位二进制数转换为十进制    192 168 1 1

用点分十进制记法表示        192.168.1.1

IP地址的点分十进制记法中每个数字是由8个比特的二进制数转化而成,因此每个十进制数字的范围是0~255。

IP地址按照其演进过程共分为以下3种形式。

1.分类IP地址

早期在对IP地址进行规划时,考虑到如果按照统一的网络规模来划分IP地址中的网络地址和主机地址并不合理。这种方式对于小型网络,会有很多地址浪费,而对于大型网络会出现主机地址不够用的情况。为此,采用分类的方式,将IP地址按照几种不同的网络规模进行网络地址和主机地址的划分以适应不同的网络。在分类IP地址中将IP地址分成为5类,即A类到E类,其中A~C类为主要的类型地址,D类为多播地址,E类为保留地址,如图1-11所示。

img13

图1-11 分类IP地址示意图

分类IP地址中按照32位IP地址的前5位进行分类,所以我们通过点分十进制法所表示的IP地址的第一个十进制数字,就可以判断出这个IP地址所属类别。

(1)A类地址

A类地址分配给大型网络,32位二进制数的第一位为0,地址范围为:1.0.0.1~126.255.255.254;

第1字节为网络地址,其他3个字节为主机地址,可分配126个网络,网络号范围为1~126,每个网络中最多包含16 777 214台主机。

(2)B类地址

B类地址分配给中型网络,32位二进制数的前两位为10,地址范围为:128.1.0.1~191.254.255.254;

前两个字节为网络地址,后两个字节为主机地址,可分配给16 382个网络,每个网络中最多包含65 534台主机。

(3)C类地址

C类地址分配给小型网络,32位二进制数的前3位为110,地址范围为:192.0.1.1~223.255.254.254;

前三个字节为网络地址,最后一个字节为主机地址,可以分配给2 097 150个网络,每个网络中最多包含254台主机。

(4)D类地址

D类地址用于多播地址,32位二进制数的前四位为1110,地址范围为:224.0.0.1~239.255.255.254;

D类地址不分网络地址和主机地址。

(5)E类地址

E类地址用于保留地址,32位二进制数的前五位为11110,地址范围为:240.0.0.1~255.255.255.254;

E类地址不分网络地址和主机地址。

2.划分子网

由于分类IP地址只将网络分成A、B、C三类,不能按照实际网络的规模进行IP地址的分配,因此,采用分类IP地址时不能充分地利用各网络的IP地址,造成较大的浪费。如果将B类地址分配给一个有1万台主机的公司,就会造成55 534个IP地址被浪费掉。

当前随着Internet的迅猛发展,其中的网络和主机的数目越来越庞大,导致IPv4地址的数目非常紧缺,为了充分利用各个网络中的IP地址,出现了划分子网的技术。

划分子网的方法是从主机号借用若干个比特作为子网号(subnet-id),而主机号(host-id)也就相应减少了若干个比特。这样就可以根据实际网络规模的大小来精确分配网络中的地址数量,可以充分利用IP地址。

IP地址::={<网络号>,<子网号>,<主机号>}

在划分子网的方法中,就不像分类IP地址那样,根据第1个字节的十进制数来判断网络的大小,即网络地址的长度,这时必须增加子网掩码(Subnet mask)来标识网络地址的长度。子网掩码的含义如图1-12所示。

img14

图1-12 子网掩码

子网掩码与IP地址的位数一样都是32位二进制数,其中左部分为1,右部分为0。需要注意的是1和0都是连续存在的不能出现间隔的情况。1的个数就代表了IP地址中网络地址的长度,包括了网络号和子网号;0的个数对应着主机号的长度。

划分子网中使用VLSM(变长子网掩码),通过子网掩码与IP地址对应位的与运算就可以直接求解出该IP地址中的网络地址。

例2:IP地址192.168.1.1,子网掩码255.255.255.252

192.168.1.1的二进制形式     11000000 10101000 00000001 00000001

255.255.255.252的二进制形式   11111111 11111111 11111111 11111100

网络地址            11000000 10101000 00000001 00000000

值得注意的是,由于左半部分为1,右半部分为0,所以子网掩码从右边算的第一个非0十进制数字除了255以外,不能是奇数,此外,由于1的位是连续出现的,所以像子网掩码255.255.255.250是不会存在的。

在每一个网络中并不是所有的主机地址都能够使用,其中主机位全0表示本网络,全1留作广播地址。例2中192.168.1.0表示本网络,192.168.1.3为广播地址,所以只有两个主机地址可以使用。因此多划分出一个子网是要付出代价的。例如,本来一个B类IP地址可容纳65 534个主机号。但划分出6bit长的子网号字段后,最多可有62个子网(去掉全1和全0的子网号)。每个子网有10bit的主机号,即每个子网最多可有1 022个主机号。因此主机号的总数是62×1 022=63 364个,比不划分子网时要少了一些(65 534-63 364=2 170)。

子网掩码为255.255.255.254的网络,其中是没有主机地址的,因此,可用的最小网络的子网掩码为:255.255.255.252。

3.CIDR(无类别域间路由选择)

当前IPv4的地址空间非常短缺,特别是A类和B类地址空间。由于划分子网的方式只能把分类IP地址中的A、B、C类网络划分得更加细致,不具有聚合能力,无法用小的网络聚合出大型网络以满足用户的需求。此外,当前核心路由器上的路由表项越来越庞大,已经严重影响了路由的查找效率,在域间路由器上尤为明显。为了节省A、B类地址空间,降低核心路由器上的路由条目数量,出现了CIDR。

CIDR(Classless Inter-Domain Routing,无类别域间路由选择)消除了传统的A类、B类和C类地址以及划分子网的概念,可以更加有效地分配IPv4的地址空间。使用CIDR聚合地址的方法与使用VLSM划分子网的方法类似。在使用VLSM划分子网时,将原来分类IP地址中的主机位按照需要划出一部分作为网络位使用;而在使用CIDR聚合地址时,则是将原来分类IP地址中的网络位划出一部分作为主机位使用。

CIDR使用任意长度的网络前缀(Network-Prefix)来代替分类地址中的网络号和子网号。IP地址从三级编址(使用子网号)又回到了两级编址。CIDR的两级编址的记法是:

IP地址::={<网络前缀>,<主机号>}

CIDR还使用斜线记法(Slash Notation),它又称为CIDR记法,即在IP地址后面加上一个斜线“/”,然后写上网络前缀所占的比特数(这个数值对应于三级编址,中子网掩码中比特1的个数)。

例3:192.168.1.1/24,表示192.168.1.1的网络地址为前24位,主机地址为后8位。

CIDR可以为拥有数千个网络主机的网络分配一个由一系列连续的C类地址组成的地址块,而非一个B类地址。

例如,假设某个网络有1 500台主机,可以为该网络分配8个连续的C类地址。如192.56.1.0~192.56.8.0,并将子网掩码定为255.255.248.0,即地址的前21位标识网络,剩余的11位标识主机。尽管通过采用CIDR可以保护B类地址免遭无谓的消耗,但是依然无法从根本上解决IPv4面临的地址耗尽问题。

CIDR将网络前缀都相同的连续的IP地址组成“CIDR地址块”。192.168.1.1/22表示的地址块共有1 022个地址。因为斜线后面的22是网络前缀的比特数,所以主机号的比特数是10。这个地址块的起始地址是192.168.0.0。在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/22地址块”。

192.168.1.1/22地址块的最小地址:192.168.0.0。

192.168.1.1/22地址块的最大地址:192.168.3.255。

地址块中的全0和全1的主机号地址一般不使用。全0表示本网络,全1表示广播地址。

在大型互联网络中,存在着成百上千的网络。在这种环境中,一般不希望路由器在它的路由表中保存所有的路由。路由归纳(也被称为路由聚合或超网(supernetting))可以减少路由器必须保存的路由条目数量,因为它使用一个归纳地址代表一系列网络号。

在大型、复杂的网络中使用路由归纳的另一个优点是它可以使其他路由器免受网络拓扑结构变化的影响。只有在使用了一个正确的地址规划时,路由归纳才可行。在子网环境中,当网络地址是以2的指数形式的连续区块时,路由归纳是最有效的。路由归纳通过减少路由表条目可以降低对路由器内存的占用,并减少路由选择协议造成的网络流量。

CIDR建立于“超级组网”的基础上,“超级组网”是“子网划分”的派生词,可看做子网划分的逆过程。子网划分时,从地址的主机部分借位,将其合并进网络部分;而在超级组网中,则是将网络部分的某些位合并进主机部分。CIDR支持路由聚合,通过将一组较小的无类别网络汇聚为一个较大的单一路由表项,减少了Internet路由域中路由表条目的数量,因此可以限制路由器中路由表的增大,减少路由通告。要使CIDR能够正确地工作,必须满足下面要求:

(1)多个IP地址必须共享相同的高位比特;

(2)路由选择协议必须根据32bit的IP地址和32bit的前缀来作出路由转发决定;

(3)路由更新必须将前缀长度(子网掩码)与32bit的IP地址一起传输。

例如一个ISP被分配了一些C类网络,这个ISP准备把这些C类网络分配给各个用户群,目前已经分配了4个C类网段给用户,如果没有实施CIDR技术,ISP的路由器的路由表中会有4条下连网段的路由条目,并且会把它通告给Internet上的路由器。通过实施CIDR技术,我们可以在ISP的路由器上把这4个网段198.168.5.0、198.168.6.0、198.168.7.0、198.168.8.0汇聚成一条路由198.168.5.0/22。这样ISP路由器只向Internet通告198.168.5.0/22这一条路由,大大减少了路由表的数目,从而为网络路由器节省出了存储空间。值得注意的是,使用CIDR技术汇聚的网络地址的比特位必须是一致的。如果上例所示的ISP连接了一个192.168.111.0网段,这些网段路由将无法汇聚,无法实现CIDR技术。