目录
[1. 路由表的基本概念](#1. 路由表的基本概念)
[2. 路由表中的默认路由](#2. 路由表中的默认路由)
[3. IP数据报的转发流程](#3. IP数据报的转发流程)
[4. 路由聚合](#4. 路由聚合)
[5. 最长前缀匹配](#5. 最长前缀匹配)
在网络世界中,IP数据报的转发是如何进行的? 这篇文章将带你深入了解路由表的基本概念和IP数据报的转发流程。我们会用简洁明了的语言和实际例子,帮助你快速掌握这一重要的网络知识。
1. 路由表的基本概念
什么是路由表?
路由表是路由器用来决定如何转发IP数据报的核心。一个IP路由表通常包含以下主要信息:
- 目的网络地址:表示数据报要到达的目标网络。
- 地址掩码:用于确定目的网络的范围。
- 下一跳路由器:数据报需要转发到的下一个路由器的地址。
- 接口:数据报通过哪个接口发送。
图示例 :
图4---23(a)展示了一个简单的路由表例子,有四个网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。可以想象,若按目的地址来制作路由表,则所得出的路由表就会过于庞大(如果每一个网络有1万台主机,四个网络就有4万台主机,因而每一个路由表就有4万个项目)。但若按目的主机所在网络的地址来制作路由表,那么每一个路由器中的路由表就只包含4个项目。
以路由器R2的路由表为例,由于R2同时连接在网络2和网络3上,因此只要目的主机在这两个网络上,就可通过接口0或接口1由路由器R2直接交付,不需要下一跳路由器的地址。若目的主机在网络1中,则下一跳路由器应为R1,其IP地址为128.0.2.7。同理,若目的主机在网络4中,则路由器R2应把分组转发给IP地址为128.0.3.1的路由器R3。
注意 :
用一个IP地址并不能准确标识一个网络,因此路由表中除了目的网络地址外还要有一个地址掩码(合起来等价于一个网络前缀)。
图4---23(a)所示的整个网络拓扑可简化为图4---23(b)所示的链路。使用这样的简化图,可以使我们不用关心某个网络内部的具体拓扑及有多少台计算机连接在该网络上,因为这些与分组转发问题并没有什么关系。这样的简化图强调了在互联网上转发数据报时,是从一个路由器转发到下一个路由器。
总结 :
由于路由器是根据路由表中的目的网络地址来确定下一跳路由器的,因此有以下结论:
- IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。
- 只有最后一个路由器才试图向目的主机进行直接交付。
2. 路由表中的默认路由
什么是默认路由?
默认路由是一种特殊的路由条目,用于减少路由表的大小和查找时间。当一个网络只有少量的对外连接时,默认路由非常有用。
示例 :
在图4---24中,主机H的路由表只需要三个项目:到本网络的路由、到网络N的路由和默认路由。
默认路由的优势:
- 减少路由表的大小:默认路由可以避免为每个可能的目的地址添加一条路由条目,从而简化路由表。
- 提高查找效率:使用默认路由可以加快路由查找的速度,尤其在网络边缘或主机发送数据报时。
具体例子 :
在图4---24所示的例子中,连接在网络N上的主机H的路由表只需要3个项目。第一个项目就是到本网络主机的路由,其目的网络就是本网络N,因而不需要路由器转发,而是直接交付。第二个项目是到网络N的路由,对应的下一跳路由器是R2。第三个项目就是默认路由,只要目的网络不是N1和N2,就一律选择默认路由,把数据报先间接交付路由器R1,让R1再转发给下一个路由器,一直转发到目的网络上的路由器,最后进行直接交付。
3. IP数据报的转发流程
IP数据报是如何转发的?
我们用一个例子来说明IP数据报的转发过程。
例4---5 :
主机H1发送一个IP数据报,其目的地址是128.30.33.138。路由器R收到此数据报后,会依次查找路由表,找到匹配的条目并进行转发。
步骤:
- 提取目的IP地址D。
- 判断是否为直接交付。
-
- 对与路由器直接相连的网络逐个进行检查:用各网络的掩码和D逐位相"与",看结果是否和相应的网络地址匹配。若匹配,则把分组直接交付(当然还需要把D转换成物理地址,把数据报封装成帧发送出去),转发任务结束;否则间接交付。
- 间接交付:
-
- 对路由表中的每一行(目的网络地址、掩码、下一跳、接口),用其中的掩码和D逐位相"与",其结果为N。若N与该行的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则继续查找。
- 使用默认路由:
-
- 若路由表中有一条默认路由,则把数据报传送给路由表中所指明的默认路由器;否则报告转发错误。
- 报告错误:
-
- 若没有默认路由,则报告转发数据报出错。
总结 :
IP数据报的首部中没有地方可以用来指明"下一跳路由器的IP地址"。在IP数据报的首部写上的IP地址是源IP地址和目的IP地址,而没有中间经过的路由器的IP地址。既然IP数据报中没有下一跳路由器的IP地址,那么待转发的数据报又怎样找到下一跳路由器呢?当路由器收到一个待转发的数据报时,在从路由表得出下一跳路由器的IP地址后,不是把这个地址填入IP数据报,而是送交下层的网络接口软件。
4. 路由聚合
什么是路由聚合?
路由聚合(Route Aggregation)是一种将多个相同路由的表项合并为一个表项的技术,能够有效减少路由表的大小。
示例 :
图4---26展示了如何将四个网络的路由合并为一个CIDR地址块,减少路由表的表项数量。
路由聚合的优势:
- 减少路由表的大小:通过将多个相同路由的表项合并为一个表项,可以显著减少路由表的大小。
- 提高查找效率:减少表项数量有助于提高路由查找的效率。
- 优化网络资源:路由聚合能有效利用网络资源,减少不必要的路由信息传递。
具体操作 :
对于路由器R来说,到网络1、网络2、网络3和网络4的下一跳路由器都是R1,而这四个网络的地址空间正好可以合并成一个CIDR地址块,因此在路由表中完全可以用一个网络前缀140.23.7.0/24来指示这四个网络的路由。
持续优化 :
实际上这种地址聚合可以不断进行下去,多个路由相同的小的CIDR地址块可以聚合成大的地址块,大的地址块还可以聚合成更大的地址块,如图4---26中的R路由表。
5. 最长前缀匹配
什么是最长前缀匹配?
在使用CIDR时,路由表中可能存在多个有包含关系的地址块前缀。最长前缀匹配(Longest-Prefix Matching)是指在这些匹配结果中选择具有最长网络前缀的路由。
示例 :
在图4---26中,若存在一条直接到网络4的链路,则应选择该链路中的最长前缀匹配项进行数据报的转发。
最长前缀匹配的优势:
- 更具体的路由选择:由于网络前缀越长,其地址块就越小,因此最长前缀匹配能够选择更加具体的路由。
- 实现特定主机路由:通过最长前缀匹配,可以方便地实现特定主机路由,只需在路由表中加入一条前缀为"特定主机IP地址/32"的表项即可。
- 实现默认路由:默认路由可以用网络前缀0.0.0.0/0来表示,因为该网络前缀的长度为0,任何IP地址都能和它匹配。
缺点:
- 查找时间变长:由于需要遍历整个路由表才能找到最长匹配的前缀项,因此查找路由表的时间会变长。
总结
路由表与IP数据报转发的关键点:
- 路由表:包含目的网络地址、地址掩码、下一跳和接口等信息。
- 默认路由:可以减少路由表的大小和查找时间,特别适用于网络边缘或主机发送数据报时。
- IP数据报的转发流程:包括直接交付、间接交付和使用默认路由等步骤。
- 路由聚合:能够有效减少路由表的大小,提高查找效率,优化网络资源。
- 最长前缀匹配:在使用CIDR时选择具有最长网络前缀的路由,提供更具体的路由选择,方便实现特定主机路由和默认路由。
通过这篇文章,你应该对路由表和IP数据报的转发有了一个基础的了解。希望这些知识能帮助你更好地理解网络世界的运作。如果有任何疑问或建议,欢迎在评论区留言讨论。
图文来源:《计算机网络教程》第六版微课版