计算机网络 第四章(网络层)【上】

参考教程:4.1 网络层概述_哔哩哔哩_bilibili

一、网络层概述

1、网络层的任务

(1)网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输

(2)如下图所示,这些异构型网络如果只是需要各自内部通信,那它们只需要实现各自的物理层和数据链路层即可。但是,如果需要将这些异构型网络互连起来,形成一个更大的互联网,就需要使用网络层互连设备路由器。(有时图中可以不画出这些网络,将它们看作是一条链路即可)

(3)对于互联网而言,仅实现计算机网络体系结构中的物理层和数据链路层是不能实现数据包在互联网中各网络之间传输的,要实现该功能,就必须实现网络层。

2、网络层需要解决的问题

(1)网络层向运输层提供怎样的服务(是可靠传输服务还是不可靠传输服务)。

(2)网络层寻址问题。例如TCP/IP协议体系的网际层使用IP地址,下图所示的IP地址分别是N1、N3、N7上两个路由器接口各自所分配的IP地址,有不同颜色标注的部分可以看作是它们所在网络的网络编号,后面的部分用于区分同一个网络中两个不同的路由器接口。

(3)路由选择问题。如下图所示,数据包从源站到目的站的路径可以有不同的选择,路由器收到数据包后依据数据包中的目的地址和路由器中的路由表来决定数据包从自己的哪个接口转发出去。(路由表中的记录可由用户或网络管理员进行人工配置,或者实现各种路由选择协议,由路由器执行路由选择协议中所规定的路由选择算法自动得出路由表的路由记录)

二、网络层提供的两种服务

1、面向连接的虚电路服务

(1)虚电路服务的核心思想是可靠通信应由网络自身来保证

(2)下图所示是一个小型的互联网,当两台计算机进行通信时,应当首先建立网络层的连接,也就是建立一条虚电路VC,Virtual Circuit),以保证通信双方所需的一切网络资源,接着双方沿着已建立的虚电路发送分组通信结束后,需要释放之前所建立的虚电路

(3)虚电路表示这是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而不是真正建立了一条物理连接。(采用电路交换的电话通信才是建立了一条真正的连接)

分组的首部仅在连接建立阶段使用完整的目的主机地址,之后每个分组的首部只需携带一条虚电路编号即可(构成虚电路的每一段链路都有一个虚电路编号)

(4)这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达、不丢失、不重复)。

(5)很多广域分组交换网都使用面向连接的虚电路服务,例如曾经的X.25和逐渐过时的帧中继FR、异步传输模式ATM等。

2、无连接的数据报服务

(1)数据报服务的核心思想是可靠通信应当由用户主机来保证

(2)下图所示是一个小型的互联网,当两台计算机进行通信时,它们的网络层不需要先建立连接每个分组可走不同的路径,因此每个分组的首部必须携带目的主机的完整地址

(3)这种通信方式所传送的分组可能误码、丢失、重复和失序

(4)由于网路本身不提供端到端的可靠传输服务,这就使得网络中的路由器可以做得比较简单,而且比电信网交换机价格低廉。

(5)因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘用户主机和其内部的运输层,而将相对简单的尽最大努力的分组交付功能置于因特网核心。

3、虚电路服务与数据报服务的比较

三、IPv4地址

1、IPv4地址概述

(1)IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符

(2)IP地址由因特网名字和数字分配机构ICANN(Internet Corporation for Assigned Names and Numbers)进行分配。

①我国用户可向亚太网络信息中心APNIC(Asia Pacific Network nformation Center)申请IP地址,需要缴费。

②2011年2月3日,互联网号码分配管理局IANA(由ICANN行使职能)宣布,IPv4地址已经分配完毕。

③我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址,同时全面开展商用部署IPv6。

(3)IPv4地址的编址方法经历了如下三个历史阶段

(4)32比特的IPv4地址不方便阅读、记录以及输入等,因此IP4地址采用点分十进制表示方法,以方便用户使用。首先将IPv4地址的32个比特每8位分为一组,每组二进制数分别转换为十进制数,四个十进制数之间各加一个点即可。

(5)十进制数与二进制数互相转换:

2、分类编址的IPv4地址

(1)分类编址的IPv4地址分为A、B、C、D、E五类:

A类地址的网络号部分占8比特,主机号部分占24比特,网络号的最高位固定为0

B类地址的网络号部分和主机号部分各占16比特,网络号的最高两位固定为10

C类地址的网络号部分占24比特,主机号部分占8比持,网络号的最高三位固定为110

④D类地址是多播地址,其最高四位固定为1110,不能分配给主机或路由器的各接口。

⑤E类地址是保留地址,其最高四位固定为1111,不能分配给主机或路由器的各接口。

⑥对于A、B、C类地址:主机号为“全0”的地址是网络地址,不能分配给主机或路由器的各接口;主机号为“全1”的地址是广播地址,不能分配给主机或路由器的各接口

(2)A类地址:

①8位网络号的最高位固定为0,当低7位全部取0时就是A类网络的最小网络号,其十进制值为0,该网络号被保留,不能指派(地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”,封装有DHCP Discovery报文的IP分组的源地址使用0.0.0.0),因此A类网络第一个可指派的网络号为最高位固定为0、低7位为0000001(其十进制值为1),将24位主机号全取为0,就可以得到该网络的网络地址1.0.0.0。

②8位网络号的最高位固定为0,当低7位全部取1时就是A类网络的最大网络号,其十进制值为127,该网络号被用于本地软件环回测试,不能指派,因此A类网络最后一个可指派的网络号为最高位固定为0、低7位为1111110(其十进制值为126),将24位主机号全取为0,就可以得到该网络的网络地址126.0.0.0。

[1]将127开头的IPv4地址的主机号部分的最低位取1、其它位取0,就可得到最小的本地软件环回测试地址,其点分十进制为127.0.0.1。

[2]将127开头的IPv4地址的主机号部分的最低位取0、其他位取1,就可得到最大的本地软件环回测试地址,其点分十进制为127.255.255.254。

A类地址可指派的网络数量为126(28-1-2,要除去最小网络号0和最大网络号127),每个A类网络中可分配的IP地址数量为16777214(224-2,要除去主机号为全0的网络地址和全1的广播地址)。

(3)B类地址:

①16位网络号的最高位固定为10,当低14位全部取0时就是B类网络的最小网络号,其点分十进制为128.0,该网络号是B类网络第一个可指派的网络号,将16位主机号全取为0,就可以得到该网络的网络地址128.0.0.0。

②16位网络号的最高位固定为10,当低14位全部取1时就是B类网络的最大网络号,其点分十进制为191.255,该网络号是B类网络最后一个可指派的网络号,将16位主机号全取为0,就可以得到该网络的网络地址191.255.0.0。

B类地址可指派的网络数量为16384(216-2),每个B类网络中可分配的IP地址数量为65534(216-2,要除去主机号为全0的网络地址和全1的广播地址)。

(4)C类地址:

①24位网络号的最高位固定为110,当低21位全部取0时就是C类网络的最小网络号,其点分十进制为192.0.0,该网络号是C类网络第一个可指派的网络号,将8位主机号全取为0,就可以得到该网络的网络地址192.0.0.0。

②24位网络号的最高位固定为110,当低21位全部取1时就是C类网络的最大网络号,其点分十进制为123.255.255,该网络号是B类网络最后一个可指派的网络号,将8位主机号全取为0,就可以得到该网络的网络地址191.255.255.0。

C类地址可指派的网络数量为2097152(224-2),每个C类网络中可分配的IP地址数量为254(28-2,要除去主机号为全0的网络地址和全1的广播地址)。

(5)分配网络号时,需要根据各网络中的主机数路由器接口总数量来决定给各网络分配哪个类别的网络号。

3、划分子网的IPv4地址

(1)分类编址存在的问题与解决方法:

①如下图所示,某单位有一个大型的局域网需要连接到因特网,如果申请一个C类网络地址,其可分配的IP地址数量只有254个,不够使用,因此该单位需要申请一个B类网络地址,其可分配的IP地址数量达到65534个,给每台计算机和路由器的接口分配一个IP地址后还有大量的IP地址剩余,然而这些剩余的IP地址只能由该单位的同一个网络使用,其它单位的网络不能使用。

②随着该单位计算机网络的发展和建设,该单位又新增了一些计算机,并且将原来的网络划分成三个独立的网络,称其为子网1、子网2和子网3。假设子网1仍然使用原先申请到的B类网络地址,那么就需要为子网2和子网3申请两个新的网络地址,但这样会存在一些弊端:

[1]申请新的网络地址需要等待很长时间和花费更多的费用。

[2]即便申请到了新的网络地址,这也会使其它路由器的路由表新增针对这两个新的网络的路由记录。

[3]浪费原有网络中剩余的大量IP地址

③如果可以从IP地址的主机号部分借助一些为作为子网号来区分不同的子网,就可以利用原有网络中剩余的大量IP地址,而不用申请新的网络地址。如下图所示,可以借用16位主机号中的8位作为子网号,假设给子网1分配的子网号为0,给子网2分配的子网号为1,给子网3分配的子网号为2,之后就可以给各子网中的主机和路由器接口分配IP地址了。

(2)32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号

①下图所示是32比特的分类IPv4地址,它由网络号和主机号两部分构成,当从主机号部分借用一些位作为子网号时,IP地址从两级结构的分类IP地址变成了三级结构的划分子网的IP地址。

②子网掩码使用连续的比特1对应网络号和子网号,使用连续的比特0对应主机号

③将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址

(3)默认的子网掩码是指在未划分子网的情况下使用的子网掩码

4、无分类编址的IPv4地址

(1)划分子网存在的问题与解决方法:

①划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁

②为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题。

③1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档:RFC1517~1519和1520。

[1]CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念

[2]CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。

(2)CIDR使用“斜线记法”,或称CIDR记法,即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量

①CIDR实际上是将网络前缀都相同的连续的IP地址组成一个“CIDR地址块”

②只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节:

[1]地址块的最小地址(作为网络地址)。

[2]地址块的最大地址(作为广播地址)。

[3]地址块中的地址数量。

[4]地址块聚合某类网络(A类、B类或C类)的数量。

[5]地址掩码(也可继续称为子网掩码)。

(3)路由聚合(构造超网):

①如下图所示,路由器R1与五个网络以及路由器R2直接相连,路由器R1和R2互为相邻路由器,它们周期性地通告自己所知道的路由信息给对方。如果R1将自己直连的这五个网络的路由记录都通告给R2,则R2的路由表会增加五条路由记录。

②为了减少路由记录对路由表的占用,可以将五条路由记录聚合成一条,其方法是“找共同前缀”,也就是找出这五个目的网络地址的共同前缀:

[1]这五个目的网络地址的左起前两个字节都是相同的,从第三个字节开始不同,因此只需将第三个字节转换成二进制形式,这样就可以很容易找出这五个目的网络地址的共同前缀。

[2]共同前缀共22个比特,记为“/22”,将共同前缀保持不变,而剩余的10个比特全部取0,然后写成点分十进制形式放在“/22”前面,就得到了聚合后的地址块(也可称为超网)。

网络前缀越长,地址块越小,路由越具体

④若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。

5、IPv4地址的应用规划

(1)给定一个IPv4地址块,可以将其划分成几个更小的地址块,并将这些地址块分配给互联网中的不同网络,进而可以给各网络中的主机和路由器接口分配IPV4地址。一般有两种划分方式:

①采用定长的子网掩码FLSM进行划分。

②采用变长的子网掩码VLSM进行划分。

(2)定长的子网掩码:

①使用同一个子网掩码来划分子网,每个子网所分配的IP地址数量相同,该方法容易造成IP地址的浪费

②采用定长的子网掩码进行子网划分,只能划分出2的n次方个子网。(其中n是从主机号部分借用的用来作为子网号的比特数量)

(3)变长的子网掩码:

①使用不同的子网掩码来划分子网,每个子网所分配的IP地址数量可以不同,尽可能地减少了对IP地址的浪费

②在地址块中给网络分配子块的原则是“每个子块的起点位置不能随意选取,只能选取块大小(子块的地址数量)整数倍的地址作为起点”,建议先给大的子块分配。

四、IP数据报的发送和转发过程

为了将重点放在TCP/IP协议栈的网际层发送和转发IP数据报的过程上,在之后的举例中忽略使用ARP协议来获取目的主机或路由器接口的MAC地址的过程以及以太网交换机自学习和转发帧的过程

1、主机发送IP数据报

(1)下图所示是一个小型互联网,路由器的接口0直连了一个交换式以太网,接口1页直连了一个交换式以太网(两个网络的子网掩码相同)。

(2)同一个网络中的主机之间可以直接通信,这属于直接交付;不同网络中的主机之间的通信需要路由器来中转,这属于间接交付

(3)假设主机C要给主机F发送IP数据报,主机C将自己的IP地址和子网掩码相与,就可以得到主机C所在网络的网络地址。既然主机C要给主机F发送IP数据报,那么主机C肯定知道主机F的IP地址,主机C将主机F的IP地址与自己的子网掩码相与就可得到目的网络地址,该地址与主机C的网络地址不相等,因此主机C就知道了主机F与自己不在同一网络,它们之间的通信属于间接交付,主机C需要将IP数据报传输给路由器,由路由器将IP数据报转发给主机F。

(4)用户为了让本网络中的主机能和其它网络中的主机进行通信,就必须给其指定本网络中的一个路由器,由该路由器帮忙进行转发,所指定的路由器也被称为默认网关。对于本例,可以将路由器接口0的IP地址指定给该接口所直连网络中的各个主机作为默认网关,同理,可将路由器接口1的IP地址指定给该接口所直连网络中的各个主机作为默认网关,这样,当本网络中的主机要和其它网络中的主机进行通信时,会将IP数据报传输给默认网关,由默认网关帮主机将IP数据报转发出去。

2、路由器转发IP数据报

(1)当路由器收到IP数据报后首先会检查IP数据报的首部是否出错

①若出错,则丢弃该IP数据报并通告源主机。

②若没有出错,则进行转发。

(2)若IP数据报的首部没有出错,路由器根据IP数据报首部中的目的地址,在自己的路由表中查找匹配的路由条目

①若找不到,则丢弃该IP数据报并通告源主机。

②若找到匹配的路由条目,则转发给路由条目中指示的下一跳。

(3)下图所示是一个小型互联网,路由器的接口0直连了一个交换式以太网,接口1页直连了一个交换式以太网(两个网络的子网掩码相同)。假设主机A要给主机D发送IP数据报,这属于间接交付。

①主机A将该IP数据报传输给自己的默认网关,也就是图中所示的路由器。

②当给路由器的接口配置IP地址和子网掩码时,路由器就知道了自己的该接口与哪个网络是直连的:

[1]接口0所直连的网络是192.168.0.0,相应的地址掩码为255.255.255.128,不需要下一跳路由器,因为接口0与该网络是直连的。

[2]接口1所直连的网络是192.168.0.128,相应的地址掩码为255.255.255.128,不需要下一跳路由器,因为接口1与该网络是直连的。

[3]路由表中可能还会有其它路由条目,这可以是用户或网络管理员手工配置的静态路由,也可以是路由器使用路由协议自动获取到的动态路由。

③对于本例,如果IP数据报首部没有出现差错,路由器取出IP数据报首部各地址字段的值,源地址字段的值为主机A的IP地址,目的地址字段的值为主机D的IP地址。接下来,路由器对IP数据报进行查表转发,路由器根据IP数据报的目的地址在自己的路由表中查找匹配的路由条目,逐条检查路由条目:

[1]将目的地址与路由条目中的地址掩码相与得到目的网络地址,如果该目的网络地址与路由条目中的目的网络地址不相同,则这条路由条目不匹配,再检查下一条路由条目。

[2]将目的地址与路由条目中的地址掩码相与得到目的网络地址,如果该目的网络地址与路由条目中的目的网络地址相同,则这条路由条目匹配,按照它的下一跳指示,也就是从接口1转发该IP数据报。

(4)下图所示是一个小型互联网,路由器的接口0直连了一个交换式以太网,接口1页直连了一个交换式以太网(两个网络的子网掩码相同)。假设主机A要发送广播IP数据报。

①假设主机A给本网络上的各设备发送广播IP数据报,数据报首部中的目的地址字段可以填写的目的地址为192.168.0.127(这是本网络的广播地址),也可以填写的目的地址为255.255.255.255(这是受限的广播地址)。该网络中的各设备都会收到该广播IP数据报,但是路由器收到后并不会转发该数据报,因为路由器是隔离广播域的。

②假设主机A给另一个网络的各设备发送广播IP数据报,在数据报首部中的目的地址字段填写的目的地址为192.168.0.255,这是网络192.168.0.128的广播地址,主机A将该广播IP数据报传输给路由器,希望由路由器帮其转发,但路由器判断出这是广播IP数据报,不会转发

五、静态路由配置及其可能产生的路由环路问题

1、静态路由配置

(1)静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表

(2)这种人工配置方式简单、开销小,但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中采用。

(3)使用静态路由配置可能出现这些导致产生路由环路的错误:配置错误、聚合了不存在的网络、网络故障。

(4)直连路由的配置过程:

①下图所示是一个小型互联网,两个路由器的两个接口分别直连了一个交换式以太网。

②路由器R1通过自己的接口0所配置的IP地址和地址掩码,可以自动得出接口0所在的网络,由于接口0与该网络直连,则下一条不是路由器地址,而是通过接口0转发IP数据报给该网络中的某个主机,这属于直接交付,这条自动得出的路由条目的类型属于直连路由;同理,R1还可自行得出接口1的直连网络路由条目。

③路由器R2通过自己的接口0所配置的IP地址和地址掩码,可以自动得出接口0所在的网络,由于接口0与该网络直连,则下一条不是路由器地址,而是通过接口0转发IP数据报给该网络中的某个主机,这属于直接交付,这条自动得出的路由条目的类型属于直连路由;同理,R2还可自行得出接口1的直连网络路由条目。

(5)静态路由的配置过程:

①下图所示是一个小型互联网,两个路由器的两个接口分别直连了一个交换式以太网。

②假设R1要转发一个IP数据报给网络192.168.2.0/24中的某个主机,R1应该将IP数据报转发给路由器R2的接口0,但R1的路由表中并没有关于该目的网络的路由条目,换句话说,R1并不知道目的网络的存在,这时可以使用路由器的相关配置命令给R1添加一条到达该目的网络的路由条目,该路由条目是人工配置的静态路由

③假设R2要转发一个IP数据报给网络192.168.1.0/24中的某个主机,R2应该将IP数据报转发给路由器R1的接口1,但R2的路由表中并没有关于该目的网络的路由条目,换句话说,R2并不知道目的网络的存在,这时可以使用路由器的相关配置命令给R2添加一条到达该目的网络的路由条目,该路由条目是人工配置的静态路由

(6)默认路由条目:

①下图所示是一个小型互联网,两个路由器的两个接口分别直连了一个交换式以太网,路由器R2的接口2连接到了因特网。

②假设R1要转发一个IP数据报给因特网中某个网络中的某个主机,R1应该将该IP数据报转发给路由器R2的接口0,但是因特网中包含了众多的网络,如果给R1添加针对这些网络的每一条路由条目,则会给人工配置带来巨大的工作量,并且使R1的路由表变得非常大,降低了查表转发的速度。

③实际上,对于具有相同下一跳不同目的网络的路由条目,可以用一条默认路由条目来替代。默认路由条目中的目的网络地址为0.0.0.0,地址掩码也为0.0.0.0,其CIDR形式为0.0.0.0/0。由于默认路由也是由我们人工配置的,因此其类型也是静态

④对于本例,默认路由条目中的下一跳是路由器R2的接口0的地址。在配置了这条默认路由条目后,甚至可以删掉该路由器中下一跳为路由器R2的接口0的其它条目。

(7)特定主机路由:

①有时候可以给路由器添加针对某个主机的特定主机路由条目,一般用于网络管理人员对网络的管理和测试。另外,在需要考虑某种安全问题时也可以采用特定主机路由。

②下图所示是一个小型互联网,两个路由器的两个接口分别直连了一个交换式以太网,路由器R2的接口2连接到了因特网。

③假设网络192.168.2.0/24中有一台“特定主机”,那么可以在R1的路由表中添加一条到达该主机的特定主机路由条目,特定主机路由条目中的目的网络地址为该特定主机的IP地址,地址掩码为255.255.255.255,其CIDR形式为特定主机IP地址/32。对于本例,特定主机路由条目的下一跳是路由器R2的接口0的地址。

④由于特定主机路由也是由我们人工配置的,因此其类型也是静态

特定主机路由的目的网络前缀最长,路由最具体;默认路由的目的网络前缀最短,路由最模糊

⑥当路由器查表转发IP数据报时,若有多条路由条目可选,则采用“最长前缀匹配”的原则,选用目的网络前缀最长的那个路由条目进行转发。

2、静态路由配置错误导致路由环路

(1)下图所示是三个路由器各自的路由表记录情况。路由器R2中的第三条人工配置的静态路由条目表明R2要转发IP数据报到网络192.168.1.0/24,下一跳应转发给R1的接口1。

(2)如果将下一跳错误地配置成了10.0.1.2,也就是错误地指向了R3的接口0,则当R2要转发IP数据报到该网络时,下一跳会错误地转发给路由器R3的接口0,R3收到该IP数据报后进行查表转发,会将数据报转发给R2的接口1,R2收到该IP数据报后进行查表转发,会将数据报转发给R3的接口0。以此往复,很显然该错误配置引发了路由环路的问题。

(3)为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。

①IP数据报进入路由器后,TTL字段的值减1。

②若TTL的值不等于0,则被路由器转发,否则被丢弃。

3、聚合了不存在的网络导致路由环路

(1)下图所示是两个路由器各自的路由表记录情况。

(2)假设R2要转发IP数据报到网络192.168.2.0/24,R2进行查表转发,下一跳应该转发给地址10.0.0.1,也就是转发给R1的接口1,R1收到该IP数据报后进行查表转发,下一跳通过接口2直接交付。

(3)R2路由表中的聚合路由实际上包含了4个网络,其中两个网络存在于网络拓扑中,另外两个并不存在。当R2要转发IP数据报到不存在的网络时,进行查表转发,是可以找到匹配的路由条目的,下一跳就会转发给R1的接口1,但对于这个不存在的网络,路由器R2应该不予转发,却错把它转发给了路由器R1,R1收到该IP数据报后进行查表转发,只能走默认路由,于是把该IP数据报转发给R2的接口0。以此往复,很显然该聚合路由引发了路由环路的问题。

(4)针对这种情况,可以在R2的路由表中添加针对所聚合的、不存在的网络的黑洞路由,黑洞路由的下一跳为null0,这是路由器内部的虚拟接口,可以把它形象地看成是一个黑洞,IP数据报进入黑洞后就有去无回了,也就是路由器丢弃了该IP数据报,而不是将它转发。

(5)假设R2要转发IP数据报到聚合路由中不存在的网络,进行查表转发,会找到两条可选的路由条目(一条聚合路由条目以及一条黑洞路由条目),根据“最长前缀匹配”的原则,R2将会选择到达不存在网络的黑洞路由,下一跳为虚拟接口null0,因此该IP数据报会进入黑洞。

4、网络故障导致路由环路

(1)下图所示是两个路由器各自的路由表记录情况。

(2)假设路由器R1检测到其接口0所直连的网络出现了故障而不可达R1会自动在其路由表中删除该直连网络的路由条目。之后,R2要转发IP数据报到该网络,进行查表转发,下一跳转发给R1的接口1,R1收到该IP数据报后进行查表转发,找不到该IP数据报的目的网络的相关路由条目,只能走默认路由,于是把该IP数据报转发给R2的接口0。以此往复,很显然该网络故障引发了路由环路的问题。

(3)针对这种情况,可以在R1的路由表中添加针对该直连网络的黑洞路由,当R2要转发IP数据报到该网络时,进行查表转发,下一跳转发给R1的接口1,R1收到该IP数据报后进行查表转发,会选择到达不存在网络的黑洞路由,下一跳为虚拟接口null0,因此该IP数据报会进入黑洞。

(4)假设一段时间后,之前的网络故障被修复了,则R1又自动地得出了其接口0的直连网络的路由条目,那么之前人工配置的针对该直连网络的黑洞路由会自动失效。如果R1再次检测到其接口0所直连的网络出现了故障而不可达,则会自动在其路由表中删除该直连网络的路由条目,并之前人工配置的针对该直连网络的黑洞路由设置为生效状态

猜你喜欢

转载自blog.csdn.net/Zevalin/article/details/135027432