考点五:IP分组的转发流程

考点五:IP分组的转发流程

1.规定性知识

在路由表中,对每条路由来说,最主要的是目的网络地址和下一跳地址。

根据目的网络地址就能确定下一跳路由器,IP数据报一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付),只有到达最后一个路由器时,才试图向目的主机进行直接交付。

特定主机路由是为特定的目的主机指明一个路由。采用特定主机路由可使网络管理人员更方便地控制网络和测试网络,也可在需要考虑某种安全问题时采用这种特定主机路由。同时,网络内的DNS、DHCP、WWW等服务器,都需要配置特定主机路由,其路由表表项是IP/32,也就是32位地址要匹配。

默认路由是在IP数据包中的目的地址找不到存在的路由时,路由器所选择的路由。目的地不在路由器的路由表里的所有数据包都会使用默认路由。路由器还可采用默认路由来减少路由表所占用的空间和搜索路由表所用的时间。如图4-19所示,只要目的网络不是N1和N2,就一律选择默认路由,把数据报先间接交付给路由器R1,路由器R1再转发给下一个路由器。

图4-19 默认路由

(1)默认路由的路由表表项是0.0.0.0/0,就是不进行地址匹配,注意默认路由要放在路由表的最后一项。

(2)当路由器收到待转发的数据报时,不是将下一跳路由器的IP地址填入IP数据报,而是送交下层的网络接口软件。

(3)网络接口软件使用ARP将下一跳路由器的IP地址转换成硬件地址,并将此硬件地址放在数据链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器(后面我们将详细讲解ARP协议的原理)。

2.分类IP分组转发算法

(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N。

(2)若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则间接交付,执行(3)。

(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则执行(4)。

(4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。

(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)报告转发分组出错。

在进行转发时,直连网络优先级最高,其次是特定主机路由,再次是路由表路由,最后是默认路由。

3.使用子网时分组的转发

路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。路由器的路由表中的每个项目,除了要给出目的网络地址,还必须给出该网络的子网掩码。若一个路由器连接在两个子网上,则拥有两个网络地址和两个子网掩码。但在划分子网的情况下,从IP地址却不能唯一地得出网络地址来,这是因为网络地址取决于网络所采用的子网掩码,但数据报的首部并没有提供子网掩码的信息,所以分组转发的算法也必须做相应的改动。

(1)从收到的分组的首部提取目的IP地址D。

(2)先用各网络的子网掩码和D逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付;否则就间接交付,执行(3)。

(3)若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(4)。

(4)对路由表中的每行的子网掩码和D逐位相“与”,若其结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(5)。

(5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(6)。

(6)报告转发分组出错。

这个比较复杂,我们通过一个例子来说明,已知互联网和路由器R1中的路由表(通过运行路由选择协议,如RIP协议可以得到路由表),主机H1向H2发送分组,如图4-20所示。

试讨论R1收到H1向H2发送的分组后查找路由表的过程。

图4-20 使用子网时分组的转发示意

①首先将H2的IP地址(目的IP地址)和H1的子网掩码进行按位与,查看是否是和H1在同一个网络,若是,则直接交付。255.255.255.128AND128.30.33.138的计算得到128.30.33.128,H1的网络地址128.30.33.0,因此H2和H1不在一个网络中,不能直接交付。

②因为没有配置特定主机路由,所以不需要进行特定主机路由的匹配。

③接着H1把分组传送到路由器R1,然后逐项查找路由表,比较时,将目的IP地址和路由表表项的每个子网掩码进行按位与,计算得到一个网络地址,当计算得到的网络地址和路由表表项的网络地址相等时,就从该项进行转发。

首先128.30.33.128AND255.255.255.128=128.30.33.128,不等于128.30.33.0,不匹配;

然后128.30.33.128AND255.255.255.128=128.30.33.128,等于目的网络地址128.30.33.128,则从接口1出发。

4.最长前缀的转发流程

使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配(Longest-prefix Matching)。网络前缀越长,其地址块就越小,因而路由就越具体(More Specific)。最长前缀匹配又称为最长匹配或最佳匹配。

我们通过一个例子来说明,收到的分组的目的地址D=206.0.71.130;路由表中的项目,如表4-25所示。

表4-25 路由表

(1)查找路由表中的第1个项目:

第1个项目206.0.68.0/22的掩码M有22个连续的1。M=11111111 11111111 11111100 00000000;因此只需把D的第3个字节转换成二进制。11111111 11111111 11111100 000000 00AND206.0.01000111.130=206.0.01000100.0,与206.0.68.0/22匹配。

(2)查找路由表中的第2个项目:

第2个项目206.0.71.128/25的掩码M有25个连续的1。M=11111111 11111111 11111111 10000000AND206.0.71.10000010=206.0.71.10000000,与206.0.71.128/25匹配。

(3)选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。

但是需要注意的是,IP地址结构和路由转发协议只是从网络层上解决了网络如何划分,网络之间如何传递数据,但是在网络内部如何传播,IP地址结构和路由转发协议无法解决,其实当数据传入到网络内部时,就进入了数据链路层了,其管理权限就放到了数据链路层了。网络层使用IP地址,数据链路层使用MAC地址,网络层需要提供IP地址到MAC地址映射的方法。这就需要网络层提供其他的必要的协议。该部分内容在考点六中展开讲解。

政哥应试提醒:IP地址结构是考试的重中之重,涉及IP地址的类别分辨、IP地址个数计算、网络个数计算及子网划分等。大家务必多练习、勤思考。

难度系数:★★★

牛刀小试

1.在因特网中,IP数据报从源节点到目的节点可能需要经过多个网络和路由器。在整个传输过程中,IP数据报报头中的( )。

A.源地址和目的地址都不会发生变化

B.源地址有可能发生变化而目的地址不会发生变化

C.源地址不会发生变化而目的地址有可能发生变化

D.源地址和目的地址都有可能发生变化

2.在因特网中,IP数据报的传输需要经由源主机和中途路由器到达目的主机,通常( )。

A.源主机和中间路由器都知道IP数据报到达目的主机需要经过的完整路径

B.源主机知道IP数据报到达目的主机需要经过的完整路径,而中间路由器不知道

C.源主机不知道IP数据报到达目的主机需要经过的完整路径,而中间路由器知道

D.源主机和中间路由器都不知道IP数据报到达目的主机需要经过的完整路径

3.设某路由器建立了如表4-26所示的转发表。

表4-26 转发表

此路由器可以直接从接口0和接口1转发分组,也可通过相邻的路由器R2、R3和R4进 行转发。现共收 到5个分组,其目的站IP地 址 分别为:①128.96.39.10;②128.96.40.12;③128.96.40.151;④192.4.153.17;⑤192.4.153.90。则此5个分组计算出的下一跳分别为( )。

A.R3、R2、R4、接口0、接口1 B.接口0、R2、R4、R3、R4

C.R4、R3、R2、接口0、接口1 D.R2、R3、R4、接口1、接口0

4.如图4-21所示,PC1会将( )目的IP地址放入发往PC2的数据包报头中。

图4-21 PC1与PC2连接示意

A.192.168.1.1 B.192.168.2.2

C.192.168.3.1 D.192.168.3.54

5.如果使用如图4-22所示的网络,下列哪项将成为192.133.219.0网络中主机A的默认网关地址?( )

A.192.135.250.1 B.192.31.7.1

C.192.133.219.0 D.192.133.219.1

图4-22 网络拓扑结构

牛刀小试解析

1.A 解析 这是一个十分经典的问题。我们来举一个例子,如某电商书店给大家发快递,发给A同学。源IP地址相当于该书店所在的地址,目的地址就是这名A同学所填写的接收快递的地址。该书店把书交给某快递公司,这中间经过很多的某快递运转中心,相当于路由器,某快递把快递交付给A同学。

假如某个学校一起订了很多书,在给大家发书的时候,物流公司将书分成了好几拨,经过不同的路线发过去,类似于IP分片,但是每个快递都是寄往同一个学校的,源地址和目的地址都没有变。也就是说,即使IP数据报在传送的过程中被分片了,目的IP地址和源IP地址仍然保持不变。如图4-23所示,源IP与目的IP没变(一般不考虑NAT)。

图4-23 数据传输地址过程示意

2.D 解析 每个IP数据报在传输的过程中,源地址和目的地址都不会发生变化,这是我们从上一题中得到的结论。路由表中有源IP地址、目的IP地址和下一跳。当IP数据报到达时,路由器根据路由表将IP数据报从相应的端口转发出去。路由器的路由表里面有下一跳的地址,但是没有完整的从源主机到目的主机路径。

3.B 解析 这个题目,我们写一下前面4个网络的每个网络号,方便接下来用最长匹配原则来寻找转发接口,如表4-27所示。

表4-27 转发表

①对于128.96.39.10,IP地址的第4个字节是0000 1010。按照最长匹配原则,匹配了网络128.96.39.0,故而选择接口0转发出去。

②对于128.96.40.12,IP地址的第4个字节是0000 1100。按照最长匹配原则,匹配了网络128.96.40.0,故而选择R2作为下一跳。

③对于128.96.40.151,IP地址的第4个字节是1001 0111。按照最长匹配原则,没有匹配的网络,只能从默认路由发送出去;故而选择R4作为下一跳。

④对于192.4.153.17,IP地址的第4个字节是0001 0001。按照最长匹配原则,匹配了网络192.4.153.0,故而选择R3作为下一跳。

⑤对于192.4.153.90,IP地址的第4个字节是0101 1010。按照最长匹配原则,没有匹配的网络,故而选择R4作为下一跳。

故而,选择B项。

4.D 解析 考查访问远程网络时IP包的封装。关于IP数据报的源和目的IP地址我们已经讨论很多了。类似于我们发快递,源地址和目的地址直接写发件人的地址和收件人的地址,而不写中间节点的地址,快递公司看到这两个地址自然知道该怎么一站一站地往下送,直到到达目的地址。

在本题中,CP1要向CP2发送数据报,目的地址直接填写CP2的IP地址即可,选择D项。

5.D 解析 网关是离开本地网络所经过的(本地网络)最后一站。网关地址与其服务对象应属于同一子网,是一个网络层单播地址。IP地址192.133.219.1是网络192.133.219.0的数据传送到其他网络的必经路由,也是该网络主机A的默认网关。