考点七:一个完整的例子结束网络层的学习

考点七:一个完整的例子结束网络层的学习

到这里我们就学完了网络层的核心功能和核心考点,下面我们将把IP地址划分、路由协议算法、IP分组的转发流程、ARP协议及IP首部等知识点全部融合到本例中,同时将回答大家可能想到的问题:MAC地址是全球唯一的,IP地址也是全球唯一的,为什么不使用MAC地址作为全球唯一地址来屏蔽不同网络差异。

如图4-30所示,图中包含R1、R2、R3、R4共4台路由器,路由器的拓扑结构及各个路由器的接口,我们来探讨以下问题:

(1)一个自治系统AS1有4个局域网,其连接图如图4-30所示,LAN2~LAN5上的主机数分别为91个、150个、3个和15个。该自治系统分配到的IP地址块为30.138.118/23。试给出每个局域网的地址块(包括前缀)。另一个自治系统AS2的网络号为198.90.10.0/27,子网掩码固定为255.255.255.224,最多可以分成多少个子网,而每个子网最多具有多少个有效的IP地址。

(2)LAN2中的一个主机1(其IP地址是IP1)向LAN1中的主机2(其IP地址是IP2)发送数据,试使用RIP协议,构造R1、R2、R3、R4的路由表,其中路由表项为<目的网络地址,子网掩码,下一跳,转发接口>。

(3)根据(2)中的路由表,分析和讨论LAN2中的一个主机1,其IP地址是IP1,向LAN1中的主机2(其IP地址是IP2)发送数据的过程。

(4)主机1的MAC地址是HA1,路由器R1的e0接口的MAC地址是HA3,路由器R1的L0接口的MAC地址是HA4,路由器R2的L2接口的MAC地址是HA5,路由器R2的e0接口的MAC地址是HA6,主机2的MAC地址是HA2;请结合网络层、数据链路层和ARP协议,叙述主机1到主机2的数据发送过程。

图4-30 网络拓扑结构示意图

我们来逐个回答这些问题,第一个问题其实是考点二中政哥点拨的第1题和第2题。

(1)AS2中,给定的地址是198.90.10.0/27,且子网掩码固定为255.255.255.224,从地址结构可知,这是一个C类地址,默认子网掩码是24位,但是题目中给定的子网掩码是27位,借用了3位主机位充当子网位,因此子网个数是23=8个。子网掩码是27位,那么主机位是5位,每个子网中最多有25=32个IP地址,但是要去掉网络地址和广播地址,于是每个子网中有30个有效的IP地址(主机地址/可分配地址)。

AS1,中按照主机优先的策略,LAN2~LAN5上的主机数分别为91个、150个、3个、和15个,该自治系统分配到的IP地址块为30.138.118/23。

首先分配LAN3,具有150个主机,所需的主机位数是「log2(150+2)=8(位),因为30.138.118/23已经有23位网络位了,又需要8位主机位,所以在地址30.138.118/23中借用1位主机位充当子网位,将该网络切割成2个子网,将118这个字节化成二进制0111 0110,其中最低位的0位置借用为子网位,可以是0或1,于是(假设我们按照从小到大一次分配,这个也是考试中的默认要求):

子网1:30.138.118.0/24,其IP地址范围是30.138.118.0~30.138.118.255,分配给LAN3;

子网2:30.138.119.0/24,这个子网继续分配。

其次分配LAN2,具有91个主机,所需的主机位数是「log2(91+2)=7(位),因为30.138.119.0/24已经有24位网络位了,又需要7位主机位,所以在地址30.138.119.0/24中借用1位主机位充当子网位,将该网络切割成2个子网,将第4个字节化成二进制0000 0000,其中最高位的0位置借用为子网位,可以是0或1,于是:

子网1:30.138.119.0/25,其IP地址范围是30.138.119.0~30.138.119.127,分配给LAN2;

子网2:30.138.119.128/25,这个子网继续分配。

最后分配LAN1、LAN4和LAN5三个子网,我们可以在30.138.119.128/25的基础上切割4个子网,于是将128这个字节化成二进制1000 0000;划分4个子网,需要借用2位主机位充当子网位,于是:

子网1:30.138.119.128/27,其IP地址范围是30.138.119.128~30.138.119.159,分配给LAN1;

子网2:30.138.119.160/27,其IP地址范围是30.138.119.160~30.138.119.191,分配给LAN4;

子网3:30.138.119.192/27,其IP地址范围是30.138.119.192~30.138.119.223,分配给LAN5;

子网4:30.138.119.224/27,其IP地址范围是30.138.119.224~30.138.119.255,未进行分配。

(2)第二个问题,试使用RIP协议,构造R1、R2、R3、R4的路由表,其中路由表项为<目的网络地址,子网掩码,下一跳,转发接口>。其实构造路由表时,我们只需要关心路由器的路径构造就可以,这个过程比较复杂,我们在构造时,在不妨碍理解的情况下,会省略一些步骤。

①路由器启动时,每个路由器只知道与本路由器直连的网络,可以得到每个路由器的初始路由表,如表4-28~表4-31所示。

表4-28 R1的路由表

表4-29 R2的路由表

表4-30 R3的路由表

表4-31 R4的路由表

②根据RIP协议,相邻路由器之间交换数据,先让R1和R2交换数据,R1网络信息会传给R2,R2网络信息会传给R1,得到如表4-32和表4-33所示的路由表(其实它们之间会相互传递信息,传递信息的顺序只会影响中间过程的路由表,不会影响最终的收敛的路由表)。

表4-32 R1的路由表

表4-33 R2的路由表

③让R1和R4交换数据,R1网络信息会传给R4,R4网络信息会传给R1,得到如表4-34和表4-35所示的路由表。这里重点看一个网络,R4通过R1到达200.1.2.0的距离是3,但是R4直连网络的200.1.2.0的距离是1,因此不更新。其他原理是一样的。

表4-34 R1的路由表

表4-35 R4的路由表

请大家注意,R1的路由表发生变化时,R1会把最新的路由表发给R2、R4,但是考虑到过程的简便性,这一步我们省略了。

④让R2和R4交换数据,R2网络信息会传给R4,R4网络信息会传给R2,得到如表4-36和表4-37所示的路由表。这里重点看两个网络,R4通过R1到达198.90.10.0的距离是3,但是通过R2到达198.90.10.0的距离是2,因此更新距离为2;R4通过R1到达200.1.3.0的距离是3,但是通过R2到达200.1.3.0的距离是2,因此更新距离为2。

表4-36 R4的路由表

表4-37 R2的路由表

⑤依次可以更新R3和R2、R4和R3,这些过程我们就不进行详细展开了。

⑥经过若干的更新,可以达到收敛状态,最终得到R1、R2、R3、R4的路由表如表4-38~表4-41所示。每个路由器知道到达各个网络的路由信息,但是由于它们的路由器的位置不同,因此它们的路由表不同、距离也不同。

表4-38 R1的路由表

表4-39 R2的路由表

表4-40 R3的路由表

表4-41 R4的路由表

续表

续表

还需要注意,如果存在多个距离相同路径,谁先更新保留谁。例如,R3到网络30.138.118.0/24,既可以通过R2,也可以通过R4,且距离都是3,如果R2先给R3发送信息,那么R3会经过R2到达30.138.118.0/24;如果R4先给R3发送信息,那么R3会经过R4到达30.138.118.0/24;在我们的例子中是R3和R2先交换信息。

到此我们的路由表就更新完了。得到路由表以后,就可以根据路由表发送信息了。

(3)第三个问题,根据(2)中的路由表,分析和讨论AS1中LAN2中的一个主机1(其IP地址是IP1)向AS2中LAN1中的主机2(其IP地址是IP2)发送数据的过程。根据子网的划分,我们假设主机1的IP地址是30.138.119.20/25;主机2的IP地址是198.90.10.100/27。

①首先判断主机1和主机2是不是在一个子网,也就是让目的IP地址和源IP地址的子网掩码进行按位与操作,198.90.10.100AND255.255.255.0=198.90.10.0,不等于30.138.119.0。因此主机1和主机2不在同一网络中。且没有特定主机路由,需要查找路由表。

②通过逐项比较R1的路由表,即让目的IP地址和每项的子网掩码按位与操作,得到网络地址,如果和该项的网络地址相同,就是匹配到“目的网络地址是198.90.10.0,子网掩码是255.255.255.224”这一项。将数据从R1的接口L0发出,发给R2。

③数据交给R2后,R2将逐项查找R2的路由表,得到目的网络地址是198.90.10.0、子网掩码是255.255.255.224的表项,表中显示直连网络,就是从R2的e0发出,交付到目的地。这样数据就从主机1交付到主机2。

(4)站在网络层的角度,根据协议的定义,数据从主机1的网络层发送到R1的网络层,再发送到R2的网络层;最后交给主机2的网络层,但是实际上并没有一条这样的物理线路存在。当数据由网络层向数据链路层封装时,IP数据报中包含IP首部,其中包含IP地址,当IP数据报向下传送时,IP数据报作为MAC帧的数据部分,再添加帧头(包含MAC地址)和帧尾,构成完整的MAC帧。反过来,当数据链路层向网络层交付数据时,会把MAC帧的帧头和帧尾去掉(包含在帧头中的MAC地址也会被去掉),只交付完整的IP数据报。

MAC地址是全球唯一的,IP地址也是全球唯一的,但是网络层使用IP地址作为转发地址,而不是MAC地址。IP地址和MAC地址的关系如图4-31所示。

图4-31 IP地址与MAC地址的关系

在图4-32中,从虚拟的IP层上看,IP数据报的流动是数据报沿着网络层进行传输,从数据链路层上看,MAC帧的流动,数据在每个路由器中进行传输的过程中,不断地进行帧的封装和解封装,在本例中,从主机H1到路由器R1时,帧的源地址是H1的MAC地址,帧的目的地址是R1的MAC地址,因为HA3和HA1在一个局域网中,路由表告知了转发接口,也就是告知了转发接口的IP地址,可以直接使用ARP广播请求和ARP单播响应得到MAC地址HA3。

当R1收到H1发送的MAC帧之后,需要把帧的头和尾去掉,交付给路由器,但是从R1到R2时,需要重新对IP数据报进行封装,此时帧的源地址变为R1的MAC地址,目的地址变为R2的MAC地址。因为HA4和HA5在一个局域网中,路由表告知了转发接口,也就是告知了转发接口的IP地址,可以直接使用ARP广播请求和ARP单播响应得到MAC地址HA5。

当R2收到R1发送的MAC帧之后,需要把帧的头和尾去掉,交付给路由器,但是从R2到主机2时,需要重新对IP数据报进行封装,此时帧的源地址变为R2的MAC地址,目的地址变为主机2的MAC地址。因为HA6和HA2在一个局域网中,路由表告知了转发接口,也就是告知了转发接口的IP地址,可以直接使用ARP广播请求和ARP单播响应得到MAC地址HA2。

MAC地址是全球唯一的,IP地址也是全球唯一的,但是网络层使用IP地址作为转发地址,而不是MAC地址。因此每次经过一个网段源MAC地址和目的MAC地址都会发生改变,但是目的IP地址和源IP地址始终不变(私有IP网络地址转换除外),其转发过程依赖于路由器内部的操作,也就是从路由器的一个接口入,从路由器的一个接口出。而路由器是网络设备,在封装和解封装的过程中,在数据链路层向网络层解封装时,会将原来的MAC地址(包括目的MAC地址和源MAC地址)丢弃;在网络层向数据链路层封装数据时,又会使用新的MAC地址(包括目的MAC地址和源MAC地址)。从另一方面理解,MAC地址是硬件地址,它与硬件设备绑定,在转发过程中,会经过不同的硬件,自然硬件地址会不断地发生变化。

图4-32 数据链路层和网络层的数据流动

主机H1与H2通信中使用的IP地址与硬件地址HA的变化表如表4-42所示。

表4-42 主机H1与H2通信中使用的IP地址与硬件地址HA的变化表