从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

  • 操作系统

  • Linux

  • 计算机网络

    • 计算机网络微课堂

      • 课程概述
      • 1-1 计算机网络在信息时代的作用
      • 1-2 因特网概述
      • 1-3 三种交换方式
      • 1-4 计算机网络的定义和分类
      • 1-5 计算机网络的性能指标
      • 1-6 计算机体系结构
      • 2-1 物理层的基本概念
      • 2-2 物理层下面的传输媒体
      • 2-3 传输方式
      • 2-4 编码与调制
      • 2-5 信道的极限容量
      • 3-1 概述
      • 3-2 封装成帧
      • 3-3 差错检测
      • 3-4 可靠传输
      • 3-5 点对点协议 PPP
      • 3-6 媒体接入控制的基本概念
      • 3-7 MAC 地址
      • 3-7 IP 地址
      • 3-7 ARP 协议
      • 3-8 集线器与交换机的区别
      • 3-9 以太网交换机自学习和转发帧的流程
      • 3-10 以太网交换机的生成树协议 STP
      • 3-11 虚拟局域网 VLAN
      • 4-1 网络层概述
      • 4-2 网络层提供的两种服务
      • 4-3 IPv4 地址
      • 4-4 IP 数据报的发送和转发过程
      • 4-5 静态路由配置及其可能产生的路由环路问题
      • 4-6 路由选择
      • 4-7 IPv4 数据报的首部格式
      • 4-8 网际控制报文协议 ICMP
      • 4-9 虚拟专用网 VPN 与网络地址转换 NAT
      • 5-1 运输层概述
      • 5-2 运输层端口号、复用与分用的概念
      • 5-3 UDP 和 TCP 的对比
      • 5-4 TCP 的流量控制
      • 5-5 TCP 的拥塞控制
      • 5.6 TCP 超时重传时间的选择
      • 5-7 TCP 可靠传输的实现
      • 5-8 TCP 的运输连接管理
      • 5-9 TCP 报文段的首部格式
      • 6-1 应用层概述
      • 6-2 客户—服务器方式和对等方式
      • 6-3 动态主机配置协议 DHCP
      • 6-4 域名系统 DNS
      • 6-5 文件传送协议 FTP
      • 6-6 电子邮件
      • 6-7 万维网 WWW
    • 计算机网络微课堂-实验手册

    • 从零开始学计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机网络
  • 计算机网络微课堂
2023-11-16

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

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

‍ 本节课我们介绍静态路由配置及其可能产生的路由环路问题。

静态路由配置是指用户或网络管理员使用路由器的相关命令,给路由器人工配置路由表,这种人工配置方式简单,开销小,但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中。

采用使用静态路由配置,可能出现以下导致产生路由环路的错误,一个是配置错误,另一个是聚合了不存在的网络,还有一个是网络故障。


接下来我们首先举例说明静态路由配置,我们采用如图所示的网络拓扑和相应的 IP 地址配置,这是路由器 R1 的路由表,路由器 R1 通过自己的接口 0 所配置的 IP 地址和地址掩码,可以自动得出接口 0 所在的网络。由于接口 0 与该网络直连,则下一跳不是路由器地址,而是通过接口 0 转发 IP 数据报给该网络中的某个主机,这属于直接交付。这条自动得出的路由条目的类型属于直连路由。同理,R1 还可自行得出接口 1 的直连网络路由条目。

这是路由器 R2 的路由表,这是其接口 0 的直连网络路由条目,这是其接口 1 的直连网络路由条目。

​​

假设 R1 要转发 1 个 IP 数据报给该网络中的某个主机,从图中可以看出,R1 应该将该 IP 数据报转发给路由器 R2 的接口 0,

但 R1 的路由表中并没有关于该目的网络的路由条目,换句话说,R1 并不知道目的网络的存在。因此我们可以使用路由器的相关配置命令,给 R1 添加 1 条到达该目的网络的路由条目,这是该目的网络的地址,下 1 跳为路由器 R2 的接口 0 的地址,该路由条目是我们人工配置的静态路由。

假设 R2 要转发 1 个 IP 数据报给该网络中的某个主机,从图中可以看出,R2 应该将该 IP 数据报转发给路由器 R1 的接口 1,但 R2 的路由表中并没有关于该目的网络的路由条目,因此我们可以给 R2 添加 1 条到达该目的网络的路由条目,这是该目的网络的地址。下 1 跳为路由器 R1 的接口 1 的地址,类型为静态。以上就是我们举例说明的静态路由配置。

​​


接下来我们举例说明默认路由的概念,假设路由器 R 的接口 2 连接到了因特网,这是路由器 R1 的路由表,这是其接口 0 的直连网络路由条目,这是其接口 1 的直连网络路由条目,这是我们人工配置的到达该目的网络的静态路由。假设 R1 要转发 1 个 IP 数据报给因特网中某个网络中的某个主机,从图中可以看出,R1 应该将该 IP 数据报转发给路由器 R 的接口 0。由于因特网中包含了众多的网络,如果我们给 R1 添加针对这些网络的每 1 条路由条目,则会给人工配置带来巨大的工作量,并且使 R1 的路由表变得非常大,降低了查表转发的速度。

实际上对于具有相同下一跳的不同目的网络的路由条目,我们可以用一条默认路由条目来替代。默认路由条目中的目的网络地址为 0.0.0.0,地址掩码也为 0.0.0.0,其 CIDR 形式为 0.0.0.0/0。对于本例默认路由条目中的下一跳,是路由器 R2 的接口 0 的地址。

由于默认路由也是由我们人工配置的,因此其类型也是静态。在配置了默认路由条目后,我们甚至可以删除这条路由条目。

​​


接下来我们举例说明特定主机路由的概念,有时候我们可以给路由器添加针对某个主机的特定主机路由条目,一般用于网络管理人员对网络的管理和测试。另外在需要考虑某种安全问题时,也可以采用特定主机路由,假设这是该网络中的某台特定主机,我们可以在 R1 的路由表中添加 1 条到达该主机的特定主机路由条目。特定主机路由条目中的目的网络地址为该特定主机的 IP 地址,地址掩码为 255.255.255.255,其 CIDR 形式为特定主机 IP 地址斜线 32。对于本例特定主机路由条目中的下一跳,是路由器 R2 的接口 0 的地址。由于特定主机路由也是由我们人工配置的,因此其类型也是静态。

可以看出特定主机路由的目的网络前缀最长,路由最具体,默认路由的目的网络前缀最短,路由最模糊,当路由器查表转发 IP 数据报时,若有多条路由条目可选,则采用最长前缀匹配的原则,选用目的网络前缀最长的路由条目进行转发。

​​


接下来我们举例说明,静态路由配置错误可能导致的路由环路问题,如图所示,这是各路由器自动得出的直连网络,这是我们给各路由器人工配置的静态路由。

​​

我们来看看路由器 R 中的这条人工配置的静态路由条目,它表明 R2 要转发 IP 数据报到该网络,下一跳,应转发给 R1 的接口 1。

​​

假设我们将下一跳错误的配置成了该地址,也就是错误的指向了 R3 的接口 0,则当 R2 要转发 IP 数据报到该网络时,下一跳会错误的转发给路由器 R3 的接口 0,R3 收到该 IP 数据报后进行查表转发,找到了匹配的路由条目,下一跳,应该转发给该地址,也就是转发给 R 的接口 1。

​​

R2 收到该 IP 数据报后进行查表转发,找到了匹配的路由条目,下一跳应该转发给该地址,也就是转发给 R3 的接口 0。

很显然由于我们静态路由配置错误,导致 R2 和 R3 之间产生了路由环路。为了防止 IP 数据报在路由环路中永久兜圈,在 IP 数据报首部设有生存时间、TTL 字段。IP 数据报进入路由器后,TTL 字段的值被路由器减 1,若 TTL 字段的值减 1 号不等于 0,则被路由器转发,否则被丢弃。


我们再来举例说明,聚合了不存在的网络可能导致的路由环路问题,这是路由器 R1 的路由表,这是其自动得出的直连网络,这是我们给其人工配置的默认路由,下一跳指向路由器 R2 的接口 0:

​​

这是路由器 R2 的路由表,这是其自动得出的直连网络,这是我们给其人工配置的 1 条聚合路由,它是由这两个网络地址聚合而来的,具体方法就是找这两个网络地址的共同前缀,然后将共同前缀保持不变,将剩余比特全部取 0,写成点分 10 进制形式,在其后面写上斜线,斜线后面写上共同前缀的数量:

​​

假设 R2 要转发 IP 数据报到该网络,进行查表转发,找到了匹配的路由条目,下一跳应该转发给该地址,也就是转发给 R1 的接口 1。

R1 收到该 IP 数据报后进行查表转发,找到了匹配的路由条目,下一跳,是通过接口 2 直接交付。

​​

我们再来看看这条聚合路由的细节,它实际上包含了以下 4 个网络,该网络存在于我们的网络拓扑中,该网络也存在于我们的网络拓扑中,而该网络不存在,该网络也不存在。

当 R2 要转发 IP 数据报到这个不存在的网络时,进行查表转发,找到了匹配的路由条目,下一跳应该转发给该地址,也就是转发给 R1 的接口 1,但对于这个不存在的网络,路由器 R2 应该不予转发,却错把它转发给了路由器 R1。

R1 收到该 IP 数据报后进行查表转发,只能走默认路由,下一跳,应该转发给该地址,也就是转发给 R 的接口 0。很显然 R1 和 R2 之间产生了路由环路。

​​

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

现在假设 R2 要转发 IP 数据报到这个不存在的网络,进行查表转发,找到了两条可选的路由条目,根据最长前缀匹配的原则,将会选择这条到达该不存在网络的黑洞路由,下一跳为虚拟接口 null0,因此该 IP 数据报会进入这个黑洞

​​


接下来我们再来举例说明,网络故障可能导致的路由环路问题,假设路由器 R1 检测到其接口 0 所直连的网络出现了故障,而不可达,就会自动在其路由表中删除该直连网络的路由条目。

之后,R2 要转发 IP 数据报到该网络,进行查表转发,找到匹配的路由条目,下一跳,应该转发给该地址,也就是转发给 R1 的接口 1。

R1 收到该 IP 数据报后进行查表转发,找不到该 IP 数据报的目的,网络的相关路由条目,只能走默认路由,下一跳应该转发给该地址,也就是转发给 R2 的接口 0,

这样就将该 IP 数据报错误的转发给了 R2,,很显然 R1 和 R 之间产生了路由环路。

​​

针对这种情况,我们可以在 R1 的路由表中添加针对该直连网络的黑洞路由,这样当 R2 要转发 IP 数据报到该网络时,进行查表转发,找到匹配的路由条目,下一跳转发给 R1 的接口 1,R1 收到该 IP 数据报后,进行查表转发,找到匹配的路由条目,这是 1 条黑洞路由,下一跳为虚拟接口 null0,因此该 IP 数据报会进入这个黑洞。

​​

假设一段时间后之前的故障消失了,则 R1 又自动的得出了其接口 0 的直连网络的路由条目,并将我们之前人工配置的针对该直连网络的黑洞路由条目设置为失效状态。

假设 R1 再次检测到其接口 0 所直连的网络出现了故障而不可达,则会自动在其路由表中删除该直连网络的路由条目,并将我们之前人工配置的针对该直连网络的黑洞路由条目设置为生效状态。

本节课的内容小节如下:

​​

上次更新: 2025/6/3 09:31:54
4-4 IP 数据报的发送和转发过程
4-6 路由选择

← 4-4 IP 数据报的发送和转发过程 4-6 路由选择→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式