欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

CIDR地址分类

程序员文章站 2022-03-19 16:36:09
CIDR地址分类   CIDR(Classless Inter Domain Routing)改进了传统的IPv4地址分类。传统的IP分类将IP地址直接对应为默认的分类,从而将I...

CIDR地址分类

 

CIDR(Classless Inter Domain Routing)改进了传统的IPv4地址分类。传统的IP分类将IP地址直接对应为默认的分类,从而将Internet分割为网络。CIDR在路由表中增加了子网掩码(subnet masking),从而可以更细分网络。利用CIDR,我们可以灵活的将某个范围的IP地址分配给某个网络。

 

1) IP地址分类

 

在IP接力赛中,我提到,IP地址可以分为如下几类:

 

IP class    From          To                 Subnet Mask

 

A           1.0.0.0       126.255.255.255    255.0.0.0

 

B           128.0.0.0     191.255.255.255    255.255.0.0

 

C           192.0.0.0     223.255.255.255    255.255.255.0

 

这是最初的IPv4地址分类设计。一个IPv4地址总共有32位,可以分为网络(network)和主机(host)两部分。子网掩码(subnet mask)是用于表示哪些位代表了网络部分。比如如下subnet mask 255.0.0.0的二进制表示为:

 

11111111 00000000 00000000 00000000

 

它的前八位为1,所以表示IP地址的前八位为网络部分。而后面的24位代指该网络的各个主机。一个A类网络可以有224台主机,也就是16777216。由于IPv4地址已经分好了类,所以当我们拿到一个IP地址,我们就可以通过上面查到它的子网掩码。(B类,216; C类,28)

 

2) 传统路由表

 

IP分类的方便了IP包的接力。IP包到达某个路由器后,会根据该路由器的路由表(routing table),来决定接力的下一站。一个传统的路由表看起来是这样的:

 

Destination        Gateway             Iface

 

199.165.145.0      0.0.0.0             eth0

 

199.165.146.0      0.0.0.0             eth1

 

0.0.0.0            199.165.146.8       eth1

 

该路由表代表的网络拓扑如下:

 

CIDR地址分类

 

由于IP分类,我们不需要记录subnet mask。当我们要前往199.165.146.17时,我们已经知道这台主机位于一个C类地址,所以它的子网掩码是255.255.255.0,也就是说199.165.146代表了网络,17代表了主机。

 

3) CIDR路由表

 

然而,由于默认分类,造成了网络只能按照A、B、C的方式存在。假设一个网络(比如MIT的网络)分配了一个A类地址,那么该网络将容许16777216个主机。如果该网络无法用完这些IP地址,这些IP地址将无法被其他网络使用。再比如上面的网络,199.165.145必须作为一个整个的网络存在。如果我们只有10台主机,那么将会有200多个IP地址被浪费。CIDR的本质是在路由表中加入子网掩码,并根据该列信息对网络进行分割,而不是根据默认的A,B,C进行分割。比如:

 

Destination        Gateway             Genmask             Iface

 

199.165.145.254    0.0.0.0             255.255.255.254     eth2

 

199.165.145.0      0.0.0.0             255.255.255.0       eth0

 

199.165.146.0      0.0.0.0             255.255.255.0       eth1

 

0.0.0.0            199.165.146.8       0.0.0.0             eth1

 

根据路由表的第一条记录,

 

199.165.145.254 (IP address) : 11000111 10100101 10010001 11111110

 

255.255.255.254 (subnet mask): 11111111 11111111 11111111 11111110 (31个1,1个0)

 

通过子网掩码可以知道,前31位表示网络,最后一位表示主机。子网掩码总是有连续多个1组成,比如上面的31个1。所以也可记为199.165.145.254/31,来同时表示IP地址和子网掩码。

 

路由器将原来的199.165.145网络中的一部分分割出来。这一网络可以容纳两台电脑,也就是199.165.145.254和199.165.145.255。这个网络对应网卡是eth2。当有IP包通向这两个IP地址时,会前往eth2,而不是eth0。

 

网络拓扑如下:

 

CIDR地址分类

 

利用CIDR,我们可以将IP地址根据需要进行分割,从而不浪费IP地址。