网络层概述

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

要实现网络层任务,需要解决以下主要问题:

因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈

由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层

综上所述,我们通过学习TCP/IP协议栈的网际层来学习网络层的理论知识和实践技术。

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

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

使用静态路由配置可能出现以下导致产生路由环路的错误

假设R1要转发给192.168.2.0/24,应该转发给R2的接口0。但是R1路由表除了直连自动识别外,没有R2接口0,换句话说,R1不知道目的网络的存在。

因此,我们可以使用路由器的相关配置命令,给R1添加一条到达该目的网络的路由条目。

该路由条目是是我们人工设置的静态路由。

默认路由为0.0.0.0/0,对于本例,下一跳为R2的接口0

人工配置默认路由,减少人工配置工作量,可以删了上一个静态路由。

特定主机路由

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

R2要转发IP数据报给192.168.1.0/24,但是把静态路由配错了如图所示。如何会发给R3,R3检查路由表,把该数据报发给R2,R2检查路由表,又发给R3,形成路由环路

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

IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。

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

先把黑洞路由当作不存在。R2要转发给192.168.2.0/24,检查路由表,发现192.168.0.0/22的聚合路由,于是发送给R1,R1检查路由表,匹配192.168.2.0/24,于是发送给192.168.2.0/24。

但是,聚合路由192.168.0.0/22包含4个IP,其中2个还不存在,试想,当R2要转发给一个不存在的IP192.168.0.0/24,检查路由表,发现192.168.0.0/22的聚合路由,于是发送给R1,R1检查路由表,只能匹配默认路由,于是发回给R2,然后就形成路由环路。

所以,我们可以在路由表中,添加所聚合的、不存在的黑洞路由。此时R2要转发给一个不存在的IP192.168.0.0/24,检查路由表,发现192.168.0.0/22的聚合路由与192.168.0.0/24的黑洞路由,根据最长前缀匹配,选择到黑洞路由,之后,该数据报被丢弃,相当于进入黑洞,有去无回。

网络故障导致的路由环路

当图示网络故障,路由表会自动删除所直连的路由记录。此时R1要发送给192.168.1.0/24,检查路由表,发现192.168.0.0/22的聚合路由,于是发送给R1,R1检查路由表,只能匹配默认路由,于是发回给R2,然后就形成路由环路。

所以,我们同样也可以添加黑洞路由。可以设置黑洞路由在故障发送后路由记录被删除后自动生效。