3.3使用子网划分了以后,分组转发
- 但在划分子网的情况下,从 IP 地址却不能唯一地得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息。
- 因此分组转发的算法也必须做相应的改动。
同一个IP地址,由不同的子网掩码可以得出相同的网络地址,但是效果是不一样的。(因为子网掩码的不同,就代表了子网划分的地址不同)
过程:
- (1) 从收到的分组的首部提取目的 IP 地址 D。
- (2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网
- 络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,
- 执行 (3)。
- (3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给
- 指明的下一跳路由器;否则,执行 (4)。
- (4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。
- (5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明
- 的默认路由器;否则,执行 (6)。
- (6) 报告转发分组出错。
四、无分类编址CIDR
无分类CIDR提出的背景:
划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在 1992 年互联网仍然面临三个必须尽早解决的问题:
- (1) B 类地址在 1992 年已分配了近一半,眼看就要在 1994 年 3 月全部分配完毕!
- (2) 互联网主干网上的路由表中的项目数急剧增长(从几千个增长到几万个)。
- (3) 整个 IPv4 的地址空间最终将全部耗尽
CIDR干了什么:
- CIDR消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间。
- CIDR使用各种长度的“网络前缀”(network-prefix)来代替分类地址中的网络号和子网号。
- IP 地址从三级编址(使用子网掩码)又回到了两级编址。
CIDR 使用“斜线记法”(slash notation),它又称为 CIDR 记法,即在 IP 地址面加上一个斜线“/”,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中 1 的个数)。例如: 220.78.168.0/24
- CIDR 虽然不使用子网了,但仍然使用“掩码”这一名词(但不叫子网掩码)。
- 对于 /20 地址块,它的掩码是 20 个连续的 1。 斜线记法中的数字就是掩码中1的个数。
128.14.32.0/20 表示的地址块共有 212 个地址(因为斜线后面的 20 是网络前缀的位数,所以这个地址的主机号是 12 位)。
- 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20 地址块”。
- 128.14.32.0/20 地址块的最小地址:128.14.32.0
- 128.14.32.0/20 地址块的最大地址:128.14.47.255
- 全 0 和全 1 的主机号地址一般不使用。
4.1路由聚合
- 一个 CIDR 地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个(例如上千个)原来传统分类地址的路由。
- 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
- 前缀长度不超过 23 位的 CIDR 地址块都包含了多个 C 类地址。
- 这些 C 类地址合起来就构成了超网
- CIDR 的一个好处是:可以更加有效地分配 IPv4 的地址空间,可根据客户的需要分配适当大小的 CIDR 地址块。
通过一个网络号就可以查找ISP了,非常方便。
4.2CIDR 记法的其他形式
- 点十进制中的0可以省略
- 掩码可以根据CIDR的网络前缀推断出来
- 星号前面表示的是网络前缀,星号后面表示的是主机号。主机号的0和1是任意的。
4.3最长匹配
- 使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果
- 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest-prefix matching)。
- 网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。
举例子:
路由表中的两个项目都匹配出目的地址:
但是我们选择最具体的那个:
最后
如果大家有更好的理解方式或者文章有错误的地方还请大家不吝在评论区留言,大家互相学习交流~~~