第四章.网络层:4.3IP层转发分组过程

本文详细介绍了互联网中分组转发的过程,包括基于终点的转发和最长前缀匹配原则。在基于终点的转发中,路由器根据目的地址逐跳传递,并利用压缩的(目的网络地址,下一跳地址)转发表进行查找。最长前缀匹配用于解决CIDR编址时多个匹配的情况,选择最具体的路由。此外,文章还讨论了主机路由、默认路由的特殊性,并提及了二叉树线索在查找转发表中的应用,以提高查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


4.3.1 基于终点的转发

  • 分组在互联网中是逐跳转发的。
  • 基于终点的转发:基于分组首部中的目的地址传送和转发。

在这里插入图片描述

为了压缩转发表的大小, 转发表中最主要的路由是(目的网络地址,下一跳地址) 而不是(目的地址,下一跳地址)。

查找转发表的过程就是逐行寻找前缀匹配。

在这里插入图片描述

在这里插入图片描述

主机H1发送出的、目的地址是128.1.2.132的分组转发过程:

在这里插入图片描述

在这里插入图片描述

路由器R1收到分组后检查转发表。先检查第1行:255.255.255.192 AND 128.1.2.132 != 128.1.2.128/26,不匹配。接着检查第2行:255.255.255.128 AND 128.1.2.132 = 128.1.2.128/25,匹配。进行分组的直接交付(通过路由器R1的接口1)。

4.3.2 最长前缀匹配

  • 使用CIDR时,在查找转发表时可能会得到不止一个匹配结果。
  • 最长前缀匹配原则:选择前缀最长的一个作为匹配的前缀。
  • 网络前缀越长,其地址块就越小,因而路由越具体。
  • 把前缀最长的排在转发表的第1行。

实例:

如下图,假定路由器R1收到一个目的地址为128.1.24.1的分组,请给出分组的转发接口。请注意,公司B包含三个子网,但这些网络前缀并没有出现在路由器RI的转发表中。这是因为公司B采用了路由聚合,把三个子网的所有地址聚合为一个网络前缀128.1.24.0/22。

在这里插入图片描述

解决方案:

我们把进入路由器R1的分组的目的地址分别和路由器RI的转发表第1行、第2行子网掩码进行按位AND运算。运算结果都是“匹配”(自行验算)。那么,哪一个结果是正确的呢?现在就来分析这个问题。

在这里插入图片描述

如上图,网络前缀128.1.24.0/22可以划分为4个更小的/24前缀。其中的一个前缀 128.1.24.0/24分配给公司A,另外3个前缀分配给公司B。公司B把得到的3个前缀聚合成一个更大的前缀128.1.24.0/22,作为路由器RI的转发表中的一个项目。请注意,这个前缀和原来的前缀在形式上是一样的,但实际的区别是很大的:在上图左边的网络前缀中包含地址128.1.24.1,但公司B的聚合后的网络前缀则不包含这个地址。因此在本例中,即分组应当从接口1转发到公司A。

那么为什么地址128.1.24.1不在公司B的聚合前缀128.1.24.0/22中,但匹配运算的结果却是匹配呢?这是因为在转发表中的项目128.1.24.0/22并未说明是由哪几个子网聚合而成的。

十分明显,进入路由器R1的分组的目的地址128.1.24.1处于公司A拥有的地址范围中,而不在公司B的地址范围内。分组应当通过接口1转发到公司A。为了减少路由器R1中的项目数,公司B采用了地址聚合,把三个地址块聚合为一个地址块128.1.24.0/22。这个聚合后得出的前缀和图中左边所示的前缀在形式上是一样的。这样就导致出现两个网络前缀都匹配的现象。

我们可以注意到,现在公司B三个地址块得出的聚合地址块是128.1.24.0/22,但如果公司B只分到两个地址块128.1.25.0/24和128.1.26.0/24,那么其聚合地址块仍然是128.1.24.0/22。如果把公司A和公司B的地址块都聚合起来,得出的聚合地址块还是128.1.24.0/22。这样的地址聚合可以发生在路山器R2中。

因此,在采用CIDR编址时,如果一个分组在转发表中可以找到多个匹配的前缀,那么就应当选择前缀最长的一个作为匹配的前缀。这个原则称为最长前缀匹配。网络前缀越长,其地址块就越小,因而路由就越具体。为了更加迅速地查找转发表,可以按照前缀的长短,把前缀最长的排在第1行,然后按前缀长短的顺序往 下排列。用这种方法从第1行前缀最长的开始查找,只要检查到匹配的,就不必再继续往下查找,可以立即结束查找。

1. 转发表中的两种特殊路由

  • 主机路由

    • 又叫做特定主机路由。
    • 是对特定目的主机的地址IP专门指明的一个路由。
    • 网络前缀是a.b.c.d/32(32个1的子网掩码和IP地址a.b.c.d按位进行AND运算后,得出的结果必定是a.b.c.d,也就是说找到了匹配)
    • 放在转发表的最前面
  • 默认路由

    • 不管分组的最终目的网络在哪里,都由指定的路由器R来处理

    • 用特殊前缀0.0.0.0/0表示(用全0的掩码和任何目的地址进行按位AND运算,结果一定是全0,即必然是和转发表中的0.0.0.0/0相匹配的)

    • 举例:

      在这里插入图片描述

      只要目的网络不是N1和N2,就一律选择默认路由,把IP数据报先间接交付默认路由器R1,让RI再转发给下一个路由器。

2. 路由器分组转发算法

在这里插入图片描述

4.3.3 使用二叉树线索查找转发表

  • 二叉线索:一种特殊结构的树,可以快速在转发表中找到匹配的叶节点

  • 从二叉线索的根节点自顶向下的深度最多有32层,每一层对应于IP地址中的一位。

  • 为简化二叉线索的结构,可以用唯一前缀来构造二叉线索。

    唯一前缀是指,在表中所有的IP地址中,该前缀是唯一的。

  • 为了提高二叉线索的查找速度,广泛使用了各种压缩技术。

1. 用5个唯一前缀构成的二叉线索

在这里插入图片描述

规则:先检查IP地址左边的第一位,如为0,则第一层的节点就在根节点的左下方;如为1,则在右下方。然后再检查地址的第二位,构造出第二层的节点。依此类推,直到唯一前缀的最后一位。每个叶节点代表一个唯一前缀。

为检查网络前是否匹配,必须使二叉线索中的每一个叶节点包含所对应的网络前缀和子网掩码。

在二叉线索中查找IP地址:

在这里插入图片描述

在这里插入图片描述


参考资料:《计算机网络(第8版)》—— 谢希仁。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值