开始讲 IP 地址。
4.3.1 IPv4 地址概述
本节课我们介绍 IPv4 地址的基本概念:
- 在 TCPIP 体系中,IP 地址是一个最基本的概念,我们必须把它弄清楚
- IPv4 地址就是给因特网上的一台主机或路由器的每一个接口,分配一个在全世界范围内是唯一的 32 比特的标识符
- IP 地址,由因特网名字和数字分配机构 ICANN(The Internet Corporation for Assigned Names and Numbers))进行分配
- 我国用户可向亚太网络信息中心(Asia-Pacific Network Information Center,APNIC)申请 IP 地址,这需要缴纳费用,一般并不接受个人申请
- 2011 年 2 月 3 日,因特网号码分配管理局宣布,IPv4 地址已经分配完毕
- 我国在 2014~2015 年也逐步停止了向新用户和应用分配 IPV4、地址,同时全面开展商用部署 IPV6
IPV4 地址的编制方法,经历了如下三个历史阶段,依次是分类编制的 IP 地址,划分子网的 IP 地址,无分类编制的 IP 地址,我们将在后续课程中对 IPVC 地址的这三种编制方法进行详细讨论。
为了能够更好的掌握 IPVC 地址的编制方法,我们首先应该掌握 IPv4 地址的表示方法。由于 32 比特的 IPV4 地址不方便阅读记录以及输入等,因此 IPV 地址采用点分十进制表示方法,以方便用户使用。
我们来举例说明,这是某个 32 比特的 IPV4 地址,将每 8 个比特分为一组,共 4 组,写出每组 8 比特所对应的 10 进制数,每个 10 进制数之间用点来分隔,这就是 IPv4 地址的点分 10 进制表示方法。
接下来请同学们参照我们所举的例子来做几个练习,这些练习题的答案如下所示,要正确做出这些练习题,关键在于掌握 8 位无符号二进制整数转十进制数的方法,这是 8 位无符号二进制整数的一般形式。
B0 是 8 位无符号二进制整数的最低位,B7 是其最高位,括号外面的 2 表示这是一个二进制数,将 8 位无符号 2 进制整数的个位乘以其权值后再相加,就可以得出相应的十进制数。我们应该熟悉 8 位无符号二进制整数,各位的权值,由高到低依次为 128,64,32,16,8,4,2,1。接下来我们来举例说明该方法:
- 将 8 位无符号二进制整数 10101010 转换为 10 进制数,就是将它的个位乘以其权值后再相加,最后可以计算出 10 进制数为 170
- 将 8 位无符号二进制整数 1111 1100 转换为 10 进制数。 对于这种比特 0 在整个 8 位无符号二进制整数中数量不多的情况,我们可以用 10 进制数 255 减去这些比特 0 位的权值,这样计算更简单,例如本例用 255 减去最低两位各自的权值 2 和 1,得到 10 进制数 252
- 请将 8 位无符号二进制整数 11110000 转换为 10 进制数
- 将 8 位无符号二进制整数 10000001 转换为 10 进制数。对于这种比特 1 在整个 8 位无符号二进制整数中数量不多的情况,我们可以直接将这些比特 1 位的权值相加,而不用写出整个转换表达式,这样计算更简单。例如本例最高位和最低位都为 1,其他位为 0,最高位的权值为 128,最低位的权值为 1,因此用 128+1 得到 10 进制数 129。
在进行 IPV4 地址的相关计算时,将点分十进制的 IPV4 地址中的十进制正整数转换为 8 位无符号二进制数,也是经常需要用到的。
将十进制正整数转换为二进制数的常用方法,是除二取余法。我们来举例说明,将 10 进制数 130 转换为二进制数,
用 130÷2 得商 65 余 0,用 65÷2 得商 32 余 1,用 32÷2 得 36 余 0,用 16÷2 得商 8 余 0,用 8÷2 得 34 余 0,用 4÷2 得商 2 余 0,用 2÷2 得商 1 余 0,用 1÷2 得商 0 余 1,做到商为 0 时结束,从下往上将余数写成比特串,就可得到所转换出的二进制数。
除二取余法是十进制正整数转二进制数的一般方法。对于 IPv4 地址的点分十进制数转换为 8 位无符号二进制整数这种特定应用,我们可以采用更快速的凑值法来进行,这需要大家熟悉 8 位二进制无符号整数各位的权值。
我们来举例说明,将 10 进制数 171 转换为二进制数,只要我们熟悉 8 位二进制无符号整数各位的权值,就不难写出这样的凑值表达式,这些就是 8 位二进制无符号整数各位的权值,而这些就是 8 位二进制无符号整数的各个位。
本节课的内容小结如下:
4.3.2 分类编址的 IPv4 地址
本节课我们介绍 IPv4 地址编制方法的第一个历史阶段,也就是分类编制的 IPv4 地址。分类编制的 IPv4 地址分为 ABCDE 五类:
- A 类地址的网络号部分占 8 比特,主机号部分占 24 比特,网络号的最高位固定为零
- B 类地址的网络号部分和主机号部分各占 16 比特,网络号的最高两位,固定为 10
- C 类地址的网络号部分占 24 个比特,主机号部分占 8 个比特,网络号的最高 3 位固定为 110
- D 类地址是多播地址,其最高 4 位固定为 1110
- E 类地址是保留地址,及最高 4 位固定为 1111
- 需要注意的是只有 A 类,B 类和 C 类地址可分配给网络中的主机或路由器的各接口
- 主机号为全 0 的地址是网络地址,不能分配给主机或路由器的各接口
- 主机号为全 1 的地址是广播地址,不能分配给主机或路由器的各接口
我们首先来看 A 类地址的细节:
-
8 位网络号的最高位固定为 0,第 7 位全部取 0 时,就是 A 类网络的最小网络号,其十进制值为 0,该网络号被保留,不能指派
-
因此 A 类网络第一个可指派的网络号为最高位固定为 0,低 7 位为 000 0001,其十进制值为 1,将 24 位的主机号全部取 0,就可以得到该网络的网络地址,且点分十进制为 1.0.0.0
-
当 8 位网络号的第 7 位全部取 1 时,就是 A 类网络的最大网络号,其十进制值为 127,该网络号被用于本地软件环回测试,不能指派
将 127 开头的 IPv4 地址的主机号部分的最低位取 1,其他位取 0,就可得到最小的本地软件环回测试地址,且点分十进制为 127.0.0.1
将 127 开头的 IPv4 地址的主机号部分的最低位取 0,其他位取 1,就可得到最大的本地软件环回测试地址,且点分十进制为 127.255.255.254
-
因此 A 类网络最后一个可指派的网络号为最高为固定为 0,低 7 位为 1111 110,10 进制值为 126,将 24 位的主机号全部取 0,就可以得到该网络的网络地址,且点分 10 进制为 126.0.0.0
-
可指派的 A 类网络的数量是多少?我们可以写出这样的表达式,由于网络号占 8 位,并且其最高位固定为 0,因此网络号有 2 的 8 减一次的组合,-2 的原因需要去掉最小网络号 0 和最大网络号 127,他们不能指派
-
每个 A 类网络中可分配的 IP 地址数量是多少呢?我们可以写出这样的表达式,由于主机号占 24 位,因此主机号有 2~24 次方个组合,-2 的原因是要去掉主机号为全 0 的网络地址 和主机号为全 1 的广播地址。
-
也就是说,一个 IP 地址的第一个数如果是 1~126,就是 A 类地址
再来看 B 类地址的细节,16 位网络号的最高两位固定为 10:
- 低 14 位全部取 0 时,就是 B 类网络的最小网络号,且点分时进制为 128.0。该网络号是 B 类网第一个可指派的网络号,将 16 位的主机号全部取 0,就可以得到该网络的网络地址,且点分十进制为 128.0.0.0
- 16 位网络号的最高两位固定为 10,低 14 位全部取一时,就是 B 类网络的最大网络号,且点分时进制为 191.255,该网络号是 B 类网最后一个可指派的网络号,将 16 位的主机号全部取 0,就可以得到该网络的网络地址,且点分时进制为 191.255.0.0
- 可指派的 B 类网络的数量是多少,我们可以写出这样的表达式。由于网络号占 16 位,并且其最高两位固定为 10,因此,网络号有 2~16-2 次个组合
- 每个 B 类网络中可分配的 IP 地址数量又是多少,我们可以写出这样的表达式。由于主机号占 16 位,因此主机号有 2 的 16 次个组合,-2 的原因是要去掉主机号为全 0 的网络地址,和主机号为全一的广播地址
- 需要说明的是有些教材中指出 128.0 是保留网络号,B 类第一个可指派的网络号为 128.1,但根据 2002 年 9 月发表的 RFC3330 文档,128.0 网络号已经可以分配了,有兴趣的同学可以自行查询,以 128.0 开头的 IP 地址,看看他们属于哪些国家
- 也就是说,IP 地址第一个开头的如果是 128~191,就是 B 类地址
再来看 C 类地址的细节,24 位网络号的最高三位固定为 110:
- 低 21 位全部取 0 时,就是 C 类网络的最小网络号,且点分时进制为 192.0.0,该网络号是 C 类网第一个可指派的网络号,将 8 位的主机号全部取 0,就可以得到该网络的网络地址,且点分十进制为 192.0.0.0
- 24 位网络号的最高三位固定为 110,低 21 位全部取 1 是,就是 C 类网络的最大网络号,写点分十进制为 223.255.255,该网络号是 C 类网最后一个可指派的网络号,将 8 位的主机号全部取 0,就可以得到该网络的网络地址,其点十时进制为 223.255.255.0
- 可指派的 C 类网络的数量是多少呢?我们可以写出这样的表达式,由于网络号占 24 位,并且其最高三位固定为 110,因此网络号有 2 的 24 减 3 次个组合
- 每个 C 类网络中可分配的 IP 地址数量是多少,我们可以写出这样的表达式。由于主机号占 8 位,因此主机号有 2 的 8 次方个组合,减 2 的原因是要去掉主机号为全名的网络地址和主机号为全 1 的广播地址
- 需要注意的是有些教材中指出,192.0.0 是保留网络号,C 类第一个可指派的网络号为 192.0.1,但根据 2002 年 9 月发表的 RFC3330 文档,192.0.0 网络号已经可以分配了,只不过目前还没有分配出去
- 也就是说,IP 地址第一个开头的如果是 192~223,就是 C 类地址
接下来我们来做一些练习,判断这些 IPv4 地址属于哪个类别,是否可以分配给主机或路由器的各接口:
- 根据地址左起第一个 10 进制数的值,可以判断出网络类别:小于 127 的为 A 类,128~191 的为 B 类,192~223 的为 C 类
- 根据网络类别就可找出地址中的网络号部分和主机号部分,A 类地址的网络号为左起第一个字节,B 类地址的网络号为左起前两个字节,C 类地址的网络号为左起前三个字节
- 以下三种情况的地址不能指派给主机或路由器接口,A 类网络号 0 和 127 不能指派,主机号为全 0 的地址不能指派,因为这是网络地址
- 主机号为全 1 的地址不能指派,因为这是广播地址
请同学们根据我们所做的分析,填写两个表格的内容:
这是计算机专业考研全国统考计算机网络部分 2017 年的题 36,答案是选项 A。
我们来一起分析一下,地址 0.0.0.0 是一个特殊的 IPv4 地址,只能作为源地址使用,表示在本网络上的本主机。封装有 DHCP 发现报文的 IP 分组的源地址,使用 0.0.0.0。 以 127 开头,且后面三个字节非全 0 或全 1 的 IP 地址,是一类特殊的 IPv4 地址,既可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试。例如常用的环回测试地址 127.0.0.1。
地址 255.255.255.255 是一个特殊的 IPv4,地址只能作为目的地址使用,表示只在本网络上进行广播,各路由器均不转发。
综上所述,选项 A 正确,这些是一般不使用的特殊 IP 地址,希望大家记住。
再来看这道练习题,请根据本节课所学内容,给出下图各网络的 IPv4、地址分配方案,请按照节约 IP 地址的原则进行分配。
我们来一起分析一下,首先应该找出图中都有哪些网络:
这是一个网络,这也是一个网络。三台交换机互联起来的交换式以太网也是一个网络
不要忘记两台路由器通过一段链路直连,他们的直连接口也属于同一个网络。
- 之后可以根据各网络中主机和路由器接口总数量,来决定给各网络分配哪个类别的网络号。该网络的主机数量为 65534 加上一个路由器接口,需要可分配的 IP 地址数量为 65535,只能给该网络分配一个 A 类网络号
- 该网络的主机数量为 254,加上一个路由器接口,需要可分配的 IP 地址数量为 255,可以给该网络分配一个 A 类或 B 类网络号。本着节约 IP 地址的原则,给该网络分配一个 B 类网络号
- 该网络的主机数量为 40,再加上一个路由器接口,需要可分配的 IP 地址数量为 41,给该网络分配一个 A 类 B 类或 C 类网络号都可以,本着节约 IP 地址的原则,给该网络分配一个 C 类网络号
- 该网络没有主机,只有两个路由器接口,需要可分配的 IP 地址数量为 2,给该网络分配一个 A 类 B 类或 C 类网络号都可以。本着节约 IP 地址的原则,给该网络分配一个 C 类网络号
- 依据所确定的网络号类别,为每个网络挑选一个网络号,A 类网络号的取值范围是 1~126,可在该范围内挑选一个网络号,分配给网络
- B 类网络号的取值范围是 128.0~191.255 可在该范围内选一个网络号分配给网络
- C 类网络号的取值范围是 192.0.0~223.255.255,可在该范围内挑选一个网络号分配给网络,
- 在挑选另一个分配给网络,不同网络的网络号不能相同
- 网络号分配完毕后,就可给各网络中的各主机和路由器的各接口,分配 IP 地址了
- 需要注意的是所分配的 IP 地址应该互不相同,并且其主机号部分不能出现全 0,因为这是网络地址,也不能出现全 1,因为这是广播地址,网络地址或广播地址都不能分配给主机或路由器的各接口,因为他们无法唯一标识一台主机或路由器的某个接口
小结:
4.3.3 划分子网的 IPv4 地址
本节课我们介绍 IPv4 地址编制方法的第二个历史阶段,也就是划分子网的 IPv4 地址。
我们首先来举例说明,为什么会出现划分子网这样的需求,如图所示某单位有一个大型的局域网,需要连接到因特网,如果申请一个 C 类网络地址,其可分配的 IP 地址数量只有 254 个,不够使用。因此该单位申请了一个 B 类网络地址,其可分配的 IP 地址数量达到了 65,534 个,给每台计算机和路由器的接口,分配一个 IP 地址后,还有大量的 IP 地址剩余。
这些剩余的 IP 地址只能由该单位的同一个网络使用,而其他单位的网络不能使用。随着该单位计算机网络的发展和建设,该单位又新增了一些计算机,并且需要将原来的网络划分成三个独立的网络,我们称其为子网一、子网二和子网三。假设子网一仍然使用原先申请到的 B 类网络地址,那么就需要为子网二和子网三各自申请一个网络地址,但这样会存在一些弊端,申请新的网络地址,需要等待很长的时间,并且要花费更多的费用。
即便申请到了两个新的网络地址,这也会使其他路由器的路由表新增针对这两个新的网络的路由记录。另外这样还会浪费原有网络中剩余的大量 IP 地址。
如果可以从 IP 地址的主机号部分借用一些位作为子网号来区分不同的子网,就可以利用原有网络中剩余的大量 IP 地址,而不用申请新的网络地址。
例如对于本例,我们可以借用 16 位主机号中的 8 位作为子网号,假设我们给子网一分配的子网号为 0,给子网二分配的子网号为 1,给子网三分配的子网号为 2,之后就可以给各子网中的主机和路由器接口分配 IP 地址了。
现在请大家思考这样一个问题,如果我们未在图中标记子网号部分,那么我们和计算机又是如何知道分类地址中主机号有多少位被用作了子网号?
这样我们就引出了一个划分子网的工具,他就是子网掩码,32 比特的子网掩码,可以表明分类 IP 地址的主机号部分,被借用了几位作为子网号。
如图所示,这是 32 比特的分类 IPv4 地址,它有网络号和主机号两部分构成:
当我们从主机号部分借用一些位作为子网号时,IP 地址从两级结构的分类 IP 地址变成了三级结构的划分子网的 IP 地址,我们用连续的比特一来对应网络号和子网号,用连续的比特 0 来对应主机号,这样就构成了划分子网的 IP 地址的 32 比特的子网掩码。
将划分子网的 IP 地址与相应的子网掩码进行逻辑与运算,也就是逐比特相与,就可得到 IP 地址所在子网的网络地址,如图所示这样网络号和子网号被保留,而主机号被清零,结果为 IP 地址所在子网的网络地址。
接下来我们来举例说明划分子网的细节,已知某个网络的地址为 218.75.230.0,使用子网掩码 255.255.255.128,对其进行子网划分,请给出划分细节。
我们一起来分析,这是题目给定的网络地址,从它的左起第一个十进制数可知,这是一个 C 类网络地址,因此网络号占三个字节,主机号占一个字节。
这是题目给定的子网掩码,这 3 个 10 进制数 255,其二进制为 24 个连续的比特 1,他们对应 IP 地址中的网络号部分,而该子网掩码中的十进值数 128,用来表示从 IP 地址的主机号部分借用多少比特来作为子网号,我们将其转换为 8 个二进制比特,其中只有 1 个比特 1,这叫表明从主机号部分借用一个比特作为子网号,因此可划分出的子网数量为二的一次,也就是两个,每个子网可分配的地址数量为 2 的 8-1 次,然后再减去 2,也就是 126 个。
由于原来的 8 位主机号被借走一位作为子网号,因此主机号还剩 7 位,这就是表达式装 8-1 的原因,可有 2 的 7 次方个组合,但是我们还要去掉主机号为全 0 的网络地址和全 1 的广播地址,这就是表达式中-2 的原因。
我们先来看看题目所给的 C 类网地址,218.75.230.0 的细节,218.75.230.0 是该网络上的第一个地址,由于这是一个 C 类网地址,因此网络号占三个字节,主机号占一个字节,将网络号保持不变,而主机号取最大值 255,这就是该网络上的最后一个地址。该 C 类网共有 256 个地址,其中第一个地址作为该网络的网络地址,也就是主机号全 0 的地址,最后一个地址作为该网络的广播地址,也就是主机号全 1 的地址,
这是比网络地址大一的地址,也就是该网络可分配给主机或路由器接口的最小地址,
这是比广播地址小一的地址,也就是该网络可分配给主机或路由器接口的最大地址
因此。该网络可分配给主机或路由器接口的地址数量为 254 个,之前我们已经分析过了
题目所给的子网掩码表明从主机号部分借用一个比特作为子网号,也就是将该 C 类网均分为两个子网,我们将主机号写成 8 比特的形式:
- 从主机号借用 1 个比特作为子网号,子网号只能是 0 或 1,这就是子网 0 的网络地址,我们将其写成点分 10 进制形式
- 保持网络号和子网号不变,主机号从 7 个比特 0 增加到 7 个比特 1,这就是子网 0 的广播地址,我们将其写成点分十进制形式
- 这是比子网 0 的网络地址大一的地址,也就是子网 0 可分配给主机或路由器接口的最小地址,我们将其写成点分 10 进制形式
- 这是比子网 0 的广播地址,小一的地址,也就是子网 0 可分配给主机或路由器接口的最大地址,我们将其写成点分 10 进制形式
- 这是比子网 0 广播地址大一的地址。请注意它的子网号部分为 1 个比特 1,主机号部分为 7 个比特 0,也就是说这是子网一的网络地址,我们将其写成点分 10 进制形式,
- 保持网络号和子网号不变,主机号从 7 个比特 0 增加到 7 个比特 1,这就是子网一的广播地址,我们将其写成点分 10 进制形式,
- 这是比子网一的网络地址大一的地址,也就是子网一可分配给主机或路由器接口的最小地址,我们将其写成点分 10 进制形式,
- 这是比子网一的广播地址,小一的地址,也就是子网一可分配给主机或路由器接口的最大地址,我们将其写成点分 10 进制形式,
可见使用子网掩码 255.255.255.128,可将 C 类网 218.75.230.0 均分为两个子网。
接下来请同学们参照我们所举的例子,完成这道练习题。本题的解答如下所示,希望同学们都能正确完成。
我们再来练习一道考研题,这是计算机专业考研全国统考计算机网络部分 2012 年的题 39,答案是选项 D。
这是题目所给的 IP 地址。从它的左起第 1 个十进制数可知,这是一个 B 类网络地址,因此网络号占两个字节,主机号也占两个字节。
这是题目所给定的子网掩码,这两个 10 进制数 255,其二进制为 16 个连续的比特 1,他们对应 IP 地址中的网络号部分,而该子网掩码中后面两个 10 进制数,252 和 0,用来表示从 IP 地址的主机号部分借用多少个比特来作为子网号。我们将其转换为 16 个二进制比特,其中有连续 6 个比特 1,这就表明从主机号部分借用 6 个比特作为子网号。
我们将 IP 地址的主机号部分转换成二进制形式,然后将子网掩码中连续 6 个比特一所对应的主机号部分作为子网号,
将网络号和子网号保持不变,而将主机号的 10 个比特全部取零就可以得到该主机所在子网的网络地址。写成点分十进制形式为 180.80.76.0,
将网络号和子网号保持不变,而将主机号的 10 个比特全部取 1,就可以得到该主机所在子网的广播地址,写成点分 10 进制形式为 180.80.79.255。因此本题的答案为选项 D
最后我们介绍默认子网掩码的概念,默认子网掩码是指在未划分子网的情况下使用的子网掩码:
- 这是 A 类地址,由 8 位网络号和 24 位主机号构成。根据子网掩码的构成规则,我们用 8 个连续的比特 1 对应 IP 地址中的 8 位网络号,用 24 个连续的比特 0 对应 IP 地址中的 24 位主机号,这样就要构成了 A 类地址的默认子网掩码,且点分十进制形式为 255.0.0.0
- 这是 B 类地址,由 16 位网络号和 16 位主机号构成。根据子网掩码的构成规则,我们用 16 个连续的比特 1 对应 IP 地址中的 16 位网络号,用 16 个连续的比特 0 对应 IP 地址中的 16 位主机号,这样就构成了 B 类地址的默认子网掩码,且点分时十制形式为 255.255.0.0
- 这是 C 类地址,由 24 位网络号和 8 位主机号构成。根据子网掩码的构成规则,我们用 24 个连续的比特 1 对应 IP 地址中的 24 位网络号,用 8 个连续的比特 0 对应 IP 地址中的 8 位主机号,这样就构成了 C 类地址的默认子网掩码,写点分 10 进制形式为 255.255.255.0
本节课的内容小结如下,希望大家能重点掌握这部分内容:
4.3.4 无分类编址的 IPv4 地址
我们介绍 IPv4 地址编制方法的第三个历史阶段,也就是无分类编制的 IPv4 地址,尽管我们上次课所介绍的划分子网的 IPv4、地址,在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的 C 类网,因为其地址空间太小,并没有得到充分使用,而因特网的 IP 地址仍在加速消耗,整个 IPv4 地址空间面临全部耗尽的威胁。
为此因特网工程任务组又提出了采用无分类编制的方法来解决 IPv4 地址紧张的问题,同时还专门成立了 IPv6 工作组,负责研究新版本 IP,以彻底解决 IP 地址耗尽的问题。
1993 年因特网工程任务组发布了无分类域间路由选择的相关 RFC 文档,无分类域间路由选择的英文缩写词为 CIDR 可以读作 sider,CIDR 消除了传统 A 类 B 类和 C 类地址,以及划分子网的概念,因此可以更加有效的分配 IPv4 的地址空间,并且可以在新的 IPv6 使用之前,允许因特网的规模继续增长。
CIDR 使用斜线记法或称为 CIDR 记法,也就是在 IPv4 地址后面加上斜线,在斜线后面写上网络前缀所占的比特数量。我们来举例说明,这是一个 IPv4 地址,在其后面写上斜线,斜线后面写上数字 20,这就表明在 32 位 IPv4 地址的前 20 个比特为网络前缀,剩余 12 个比特为主机号。
实际上 CIDR 将网络前缀都相同的连续的 IP 地址组成一个 CIDR 地址块,我们只要知道 CIDR 地址块中的任何一个地址,就可以知道该地址块的全部细节,包括最小地址,最大地址,地址块中的地址数量,地址块聚合某类网络的数量以及地址掩码。
我们来举例说明,请给出 CIDR 地址块 128.14.35.7/20 的全部细节,斜线后面的数字为 20,表明该 IPv4 地址的前 20 个比特为网络前缀,也就是说所给地址左起第一个字节,第二个字节以及第三个字节的前 4 个比特构成 20 比特的网络前缀,剩余 12 个比特为主机号,因此我们需要将该地址的第 3 个字节和第 4 个字节转换成二进制的形式,这样我们就可以很容易看出 20 比特的网络前缀和 12 比特的主机号。
将 20 比特的网络前缀保持不变,12 比特的主机号全部取 0,就可以得到该地址块的最小地址,点分 10 进制为 128.14.32.0,将 20 比特的网络前缀保持不变,12 比特的主机号全部取一,就可以得到该地址块的最大地址。点分 10 进制为 128.14.47.255,该地址块中的地址数量为 2 的 32-20 次方个,因为 32 比特的 IPv4 地址中,前 20 个比特为网络前缀,剩余 12 比特为主机号,因此主机号可有 2 的 12 次方个组合,
聚合 C 类网的数量,用该地址块中地址数量除以一个 C 类网的地址数量 2 的 8 次方个,即可得出为 2 的 4 次方,即可以划分为 16 个 C 类网。聚合路由的作用:可以减少路由表的数量。例如将所有 C 类网的路由记录,聚合成一个。
地址掩码为 20 个连续的比特 1 和 12 个连续的比特 0。20 个连续的比特一用来对应网络前缀,12 个连续的比特 0 用来对应主机号,将其写成点分时进制为 255.255.240.0。
接下来请同学们参照我们所举的例子来完成这道习题:
接下来我们介绍 CIDR 中有关路由聚合的概念,路由聚合也称为构造超网。我们来举例说明,如图所示路由器 R1 与 5 个网络以及路由器 R2 直接相连,路由器 R1 和 R2 互为相邻路由器,它们周期性的通告自己所知道的路由信息给对方。请大家思考一下,R1 应该将怎样的路由信息通告给 R2:
如果 R1 将自己直连的这 5 个网络的路由记录都通告给 R 则 R 的路由表会增加 5 条路由记录,为了减少路由记录对路由表的占用,能否将这 5 条路由记录聚合成 1 条?
答案是肯定的,其方法是找共同前缀,也就是找出这 5 个目的网络地址的共同前缀,这 5 个目的网络地址的左起前 2 个字节都是相同的,从第三个字节开始不同,因此只需将第三个字节转换成二进制形式,这样就可以很容易找出这 5 个目的网络地址的共同前缀,共 22 个比特,我们将其记为斜线 22,将共同前缀保持不变,而剩余的 10 个比特全部取 0,然后写成点分 10 进制形式放在斜线 22 的前面,这就是聚合后的地址块,也可以称为超网。
通过本地我们还可以看出网络前缀越长,地址块越小,路由就越具体。需要说明的是若路由器查表转发分组时,发现有多条路由可选则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。
这是计算机专业考研全国统考,计算机网络部分 2011 年的题 38,答案是选项 C。
这是题目所给的网络地址,斜线后面的数字为 30,表明该 IPv4 地址的前 30 个比特为网络前缀,也就是说所给地址,左起第 1 个字节,第 2 个字节,第 3 个字节以及第 4 个字节的前 6 个比特构成 30 比特的网络前缀,剩余两个比特为主机号,因此我们需要将该地址的第 4 个字节转换成二进制的形式,这样我们就可以很容易看出 30 比特的网络前缀和两比特的主机号。将 30 比特的网络前缀保持不变,两比特的主机号全部取 0,就可以得到该网络的最小地址,这也是该网络的网络地址,且点分十进制为 192.168.4.0,
将 30 比特的网络前缀保持不变,两比特的主机号全部取一,就可以得到该网络的最大地址。这也是该网络的广播地址,其点分 10 进制为 192.168.4.3,这是比网络地址大 1 的地址,也就是该网络中可分配给主机或路由器接口的最小地址,且点分 10 进制为 192.168.4.1,这是比广播地址小 1 的地址,也就是该网络中和分配给主机或路由器接口的最大地址,其点分时进制为 192.168.4.2。
题目中给定 IP 分组的目的地址为 192.168.4.3,这是该网络的广播地址,因此该网络上的所有主机都能收到,由于该网络只有两个可分配的 IP 地址,因此网络中的主机数量最大为 2,那么可以收到该 IP 分组的最大主机数就是 2。
再来看 2018 年的提 38,答案是选项 C
路由聚合的方法是找共同前缀,也就是找出题目所给的这 4 个目的网络地址的共同前缀。这 4 个目的网络地址的左起前 2 个字节都是相同的,从第三个字节开始不同,因此只需将第三个字节转换成二进制形式,这样就可以很容易找出这 4 个目的网络地址的共同前缀,共 19 个比特,我们将其记为斜线 19,将共同前缀保持不变,而剩余的 13 个比特全部取 0,然后写成点分 10 进制形式放在斜线 19 的前面,这就是聚合后的目的网络地址
本节课的内容小结如下,希望大家能重点掌握这部分内容:
4.3.5 IPv4 地址的应用规划
本节课我们介绍 IPv4 地址的应用规划,也就是给定一个 IPv4 地址块,如何将其划分成几个更小的地址块,并将这些地址块分配给互联网中的不同网络,进而可以给各网络中的主机和路由器接口分配 IPv4 地址,一般有以下两种方法:
- 一种是采用定长的子网掩码进行划分。就是使用同一个子网掩码来划分子网
- 另一种是采用变长的子网掩码进行划分。就是使用不同的子网掩码来划分子网
采用定长的子网掩码来划分子网,每个子网所分配的 IP 地址数量相同,容易造成 IP 地址浪费。
而采用变长的子网掩码来划分子网,每个子网所分配的 IP 地址数量可以不相同,尽可能减少了对 IP 地址的浪费。
接下来我们举例说明,采用定长的子网掩码划分子网的方法,假设我们申请到了一个 C 类网络,218.75.230.0,要使用定长的子网掩码,给图中所示的小型互联网中的各设备分配 IP 地址。我们首先来统计一下图中各网络所需的 IP 地址数量。来看网络 N1 的 IP 地址需求,N1 中有 6 台主机,因此主机需要的地址数量为 6 个,有 1 个路由器接口,因此路由器接口需要的地址数量为 1 个,再加上 N1 自身的网络地址 1 个和广播地址 1 个,总共需要 9 个 IP 地址。
再来看网络 N2 的 IP 地址需求,N2 装有 25 台主机,因此主机需要的地址数量为 25 个,有 1 个路由器接口,因此路由器接口需要的地址数量为一个,再加上 N2 自身的网络地址一个和广播地址 1 个,总共需要 28 个 IP 地址。
相信同学们可以很容易的统计出网络 N3 和 N4 各自所需的 IP 地址数量
请注意我们可将途中两个路由器之间的这段链路看成是网络 N5,其中没有主机,因此主机需要的地址数量为 0,有两个路由器接口,因此路由器接口需要的地址数量为 2 个,再加上 N5 自身的网络地址一个和广播地址一个,总共需要 4 个 IP 地址,这样我们就可得到本例的应用需求,也就是将 C 类网 218.75.230.0 划分成 5 个子网,每个子网上可分配的 IP 地址数量不得少于各自的需求。
这是所申请到的 C 类网地址 218.75.230.0,这是它的 3 字节网络号,这是它的 1 字节主机号,我们需要从主机号部分借用 3 个比特作为子网号,这样可划分出的子网数量为 2 的 3 次方个,也就是 8 个,可以满足我们对子网数量的要求,而每个子网上的地址数量为 2 的 8-3 次个,也就是 32 个,可以满足我们对子网上 IP 地址数量的要求。这样我们就可以得出划分子网所需的子网掩码,用 3 个 10 进制数 255 来对应网络号部分,也就是用 24 个连续的比特 1 来对应网络号,而最后 8 个比特为 1110 0000,其中 3 个连续的比特 1 表示,从主机号部分借用三个比特作为子网号,将这 8 比特写成 10 进制数为 224。
接下来我们来看划分子网的细节:
- 这是 24 比特网络号部分,这是从主机号部分借用的 3 比特作为子网号部分,这是剩余的 5 比特主机号部分
- 这是子网 1 的网络地址,这是它的点分十进制形式
- 将网络号和子网号保持不变,主机号从 5 个比特 0 增长到 5 个比特 1,就可得到子网一的广播地址,这是它的点分十进制形式
- 这是比子网 1 的网络地址大 1 的地址,它是子网 1 上个分配给主机或路由器接口的最小地址,这是他的点分时进制形式
- 这是比子网 1 的广播地址小 1 的地址,它是子网 1 上可分配给主机或路由器接口的最大地址,这是它的点分十进制形式
- 这是比子网 1 的广播地址大 1 的地址,它是子网 2 的网络地址,这是它的点分 10 进制形式
- 将网络号和子网号保持不变,主机号从 5 个比特 0 增长到 5 个比特 1,就可得到子网 2 的广播地址,这是它的点分 10 进制形式
- 这是比子网 2 的网络地址大 1 的地址,它是子网 2 上可分配给主机或路由器接口的最小地址,这是它的点分十进制形式
- 这是比子网 2 的广播地址小 1 的地址,它是子网 2 上可分配给主机或路由器接口的最大地址,这是它的点分十进制形式
- 这是比子网 2 的广播地址大 1 的地址,它是子网 3 的网络地址,这是它的点分十进制形式
- 以此类推,我们可以得到划分子网的全部细节
现在我们就可以从子网 1~8 中任选 5 个,分配给图中的网络 N1 到 N5。通过本地可以看出采用定长的子网掩码进行子网划分,只能划分出二的 N 次方个子网,其中 N 是从主机号部分借用的用来作为子网号的比特数量,每个子网所分配的 IP 地址数量相同,容易造成 IP 地址的浪费。
例如图中的网络 5 只需要 4 个 IP 地址,但是我们只能给他分配 32 个 IP 地址,这样就造成了 IP 地址的严重浪费。
接下来我们举例说明,他用变成的子网掩码划分子网的方法,本例与之前的例子基本一样,只是划分子网的方法,改为采用变长的子网掩码,这是我们之前就统计过的各网络所需 IP 地址的数量。既然网络 N1 需要 9 个地址,那么分配给网络 N1 的地址的主机号应为 4 个比特,因为 2 的 4 次方等于 16,这样网络 N1 就可有 16 个地址。由于使用 4 个比特作为主机号,因此剩余 28 个比特可作为网络前缀。
既然网络 N2 需要 28 个地址,那么分配给网络 N2 的地址的主机号应该为 5 个比特,因为 2 的 5 次方等于 32,这样网络 N2 就可有 32 个地址,由于使用 5 个比特作为主机号,因此剩余 27 个比特可作为网络前缀。
相信同学们可以很容易的得出分配给网络 N3 ,N4, N5 的地址中的主机号所占比特数量和网络前缀所占比特数量。
我们将所得出的各网络所需地址块的大小标注在它们各自的旁边,这样我们就可得到本例的应用需求:
也就是从地址块 218.75.230.0/24 中,取出 5 个地址块,按需分配给图中所示的 5 个网络,218.75.230.0/24 地址块所包含的全部地址如下所示,我们需要在该地址块中给图中所示的网络 N1 到 N5 分配子块,分配的原则是每个子块的起点位置不能随意选取,只能选取块大小整数倍的地址作为起点,建议大家先给大的子块进行分配。
- 例如将这 32 个地址作为一个地址块,分配给网络 N2,地址块中最小的地址就是 N2 的网络地址,最大的地址就是 N2 的广播地址,网络地址和广播地址之间的这些地址,可分配给 N2 中的主机或路由器接口。我们将网络 N2 所分配到的地址块标注在它的旁边
- 将这 16 个地址作为一个地址块分配给网络 N1,地址块装最小的地址就是 N1 的网络地址,最大的地址就是 N1 的广播地址,网络地址和广播地址之间的这些地址,可分配给 N1 中的主机或路由器接口。我们将网络 N1 所分配到的地址块标注在它的旁边
- 将这 16 个地址作为一个地址块分配给网络 N3。地址块中最小的地址就是 N3 的网络地址,最大的地址就是 N3 的广播地址,网络地址和广播地址之间的这些地址,可分配给 N 三中的主机或路由器接口。我们将网络 N 三所分配到的地址块标注在它的旁边
- 将这 16 个地址作为 1 个地址块分配给网络 N4,地址块装最小的地址就是 N4 的网络地址,最大的地址就是 N4 的广播地址,网络地址和广播地址之间的这些地址,可分配给 N4 中的主机或路由器接口。我们将网络 N4 所分配到的地址块标注在它的旁边
- 将这 4 个地址作为 1 个地址块分配给网络 N5。地址块中最小的地址就是 N5 的网络地址,最大的地址就是 N5 的广播地址,网络地址和广播地址之间的这些地址,可分配给 N5 中的主机或路由器接口。我们将网络 N5 所分配到的地址块标注在它的旁边
- 原地址块装还剩余这些地址可以留作今后分配。通过本例可以看出采用变长的子网掩码进行子网划分,可以按需划分出相应数量的子网,每个子网所分配到的 IP 地址数量可以不相同,尽可能减少了对 IP 地址的浪费
- 例如图中的网络 5 只需要 4 个 IP 地址,我们也非常精确的给他分配了 4 个 IP 地址,没有造成 IP 地址的浪费
最后请同学们参照本节课所介绍的两个例子,完成下面这道习题。本题的答案并不唯一。
本节课的内容小结如下:
标签:子网,比特,主机,网络,计算机网络,地址,IPv4,IP,课堂 From: https://www.cnblogs.com/PeterJXL/p/18214945