手揣网教程/路由器百科/内容

完全理解IP地址分类与CIDR(IP地址理解)

路由器百科2024-07-11 阅读

引言

在沟通生产网络部署的时候,应用开发人员在与网络管理员沟通中经常会遇到很多术语,如何不能很好理解相应的概念沟通起来就会非常费劲,经常遇到的问题如:

  1. A、B、C类地址是什么?
  2. 什么是子网掩码?
  3. 什么是CIDR?

往下看,本文将对这些术语的来龙去脉进行详细解释。

一、网络地址分类

在internet中,无论想要访问一个终端或者被一个终端访问,都需要一个唯一的标志,也就是IP地址(Internet Protocol Address)。终端之间的互联使用路由器进行转发,路由器维护着一张路由表,路由表记录着IP地址的路由关系,收到请求后根据目的地址IP和路由表决策进行分发。

由于全世界的终端数量是非常恐怖的,如果每个终端都分配一个不规则的IP地址,那么路由表就记录全世界的IP地址,这是一个庞大的数字,路由表将会非常的大,造价和性能都是挑战,对于路由器来说是难以承受的。

于是为了方便寻址,就出现了网络号和主机号,也就是将IP地址分为网络地址+主机地址,网络地址用于标志一个网络,主机地址用于标志网络内部的终端,这样子一来路由器只需要维护一个网络地址的方向就可以找到拥有同个网络地址的所有IP对应的终端了。

当区分网络地址和主机地址以后,为了适应不同的网络需要,例如有些大型企业或者政府机构需要大型网络,有些小企业只需要一个小网络,如果固定了网络地址位数和主机地址位数,那么势必有些使用场景会有地址不够的情况,有些则会有浪费的情况,于是网络地址和主机地址的位数就变成了动态可变化的,这就人为进行了分类,于是就出现了ABCDE五类网络地址,分别适用于不同的使用场景。

如何来区分A、B、C类IP地址呢?我们知道IP是32位的二进制,常用点分十进制的写法,例如192.168.56.11,那么可以简单的通过这四段号码来进行区分:

类别

最大网络数

IP地址范围

有效IP地址范围

单个网段最大主机数

预留IP

私有IP

A

126(2^7-2)

1.0.0.0-127.255.255.255

1.0.0.1-127.255.255.254

16777214

1.0.0.0、127.255.255.255

10.0.0.0-10.255.255.255

B

16384(2^14)

128.0.0.0-191.255.255.255

128.0.0.1-191.255.255.254

65534

128.0.0.0、191.255.255.255

172.16.0.0-172.31.255.255

C

2097152(2^21)

192.0.0.0-223.255.255.255

192.0.0.1-223.255.255.254

254

192.0.0.0、223.255.255.255

192.168.0.0-192.168.255.255

可以发现1.0.0.0、128.0.0.0和192.0.0.0都不在有效可使用的地址范围内,这是因为这几个地址都是各网络分类的网络地址,指代了这个网络。

127.255.255.255、191.255.255.255和223.255.255.255同样不在有效IP地址范围内,因为他们属于该对应网络的广播地址。

按照规定主机位全为0的时候为其网络地址,全为1为该网络的广播地址,这个两地址是保留的不能分配给设备使用。

A类地址的网络数为2^7-2,减掉的2个一个是全0的情况,一般情况下从1开始,所以全0不计算在内,另外一个是127的网络,127一般用于本机回环,也不计算在可用范围内。

每一类地址都有一段私有IP,一般不用于公网而是被用于私有局域网,例如C类地址的192.168.0.0-192.168.255.255就是比较常见的局域网地址。

B类地址中169.254.0.0-169.255.255.255属于保留地址,如果终端配置了通过DHCP自动获取IP地址,但是又找不到DHCP服务器,那么就会从169.254.0.0-169.255.255.255临时获取一个地址。

二、子网掩码

上面说到路由器通常要建立一个转发表来确定如何将请求转发到不同的主机,主机数越多,转发表也就越大,路由器的性能压力越大,所以针对每个IP进行映射的方案存在缺陷。另外,不管一个网络内部的主机数量多少,至少都需要分配一个C类的网络地址,网络内的地址浪费严重。那有没有什么解决方案呢?答案就是子网掩码。

通过设定子网掩码,指定一个IP地址哪些位标识的是网络地址,哪些位标识的是主机地址,网络地址相同的IP地址被认为是同一个网络,可以在无路由的情况下相互通信,通过这种方式认为地将一个比较大的网路划分了子网,减少了网络上的通信量,一些较大的企业内部也经常采用这种方式进行子网的划分,更加方便管理,子网掩码也叫做地址掩码。

子网掩码也是一个32位的2进制数,可以写成点分十进制的方式,其对应网络地址的所有位都位1,对应主机地址的所有地位都为0,将32位的子网掩码与IP地址进行二进制形式的按位逻辑与运算得到的就是网络地址,将子网掩码二进制按位取反然后与IP地址进行二进制的逻辑与(AND)运算得出的就是主机地址。按照这种方法,可以知道A类地址的子网掩码是255.0.0.0,B类地址的子网掩码是255.255.0.0,C类地址的子网掩码是255.255.255.0。

三、CIDR的出现

子网掩码虽然解决了路由表的问题,但是网络内还是存在大量的IP浪费,并且在实际的应用中,很多的管理员已经讲子将掩码配置成了不定长的形式,实际上A、B、C、D、E的分类名存实亡了。

CIDR的出现非常好地解决了IP浪费和管理上的问题,其全称是Classless Inter-Domain Routing,即无类别域间路由,是基于可变长子网掩码VLSM来进行任意长度的前缀的分配的,它使得我们可以将一些不同类别的IP地址合并为一个“超网”地址,打破不同类别网络地址间的界限,这样子的话原网络分类在不同网络内的未被利用的IP就可以组成一个“超网”对外提供。

CIDR采用的是IP/x,x指的是前x位为网络前缀,例如192.168.0.1/24,前24位为网络地址,后8位为主机地址。令主机地址分别为全0和全1就可以得到一个CIDR地址块的最小地址和最大地址,令网络前缀全1,主机地址全0,就可以得到子网掩码。

……

相关阅读