【网络协议】静态路由详解
网络中的路由器通过以下两种方式之一发现远程网络:
- 静态配置路由
- 动态路由协议
在本文,我们将学习关于静态路由的各种概念,例如如何配置静态路由、路由表如何进行决策、路由接口等相关知识。
文章目录
- 引言
- 直连网络
- 静态路由
- 路由表原则
- 原则1
- 原则2
- 原则3
- 应用这些原则
- 原则 1
- 原则 2
- 原则 3
- 在路由器 R2 上的配置
- 在路由器 R3 上的配置
- 解决下一跳IP地址的问题
- 汇总路由和默认路由
引言
路由器的工作是将数据包从源设备转发到目标设备。在两者之间可能有多个路由器。路由器使用一种被称为路由表的数据库来转发这些数据包。
参考下图所示的拓扑结构。
上图展示了一个由3台路由器和2台主机组成的小型网络。如前所述,每个路由器的连接都应有其独立的网络段,这在图中有所体现。
网络管理员还将R1和R3的串行接口配置为DCE,且所有其他配置均正确。
在此场景中:
- R1 可以 ping 通主机 A,也可以 ping 通 R2 的 s0/0/0 接口,但无法 ping 通 s0/0/1 接口。
- R3 可以 ping 通主机 B,也只能 ping 通 R2 的 s0/0/1 接口。
- 主机 A 和主机 B 无法通信。
如下图所示。
在本章中,我们将解释为什么这两台计算机无法通信的原因,并解决此问题。
请牢记该拓扑图,因为它将在本章中持续使用。
直连网络
路由表是一个数据库,包含有关各种网络的信息。我们已经提到,这些远程网络可以通过路由协议学习,也可以通过手动配置的路由获得。
在路由器上执行 show ip route
命令的输出会显示特定路由器可以到达的路由。默认情况下,路由器只能了解直接连接的路由。
在我们的场景中,从 R1 的角度来看,直接连接的网络是连接到 HOST A 的网络以及 R1 和 R2 之间的网络。
由于这些路由器(R2 和 R3)尚未进行其他配置,因此它们应该只具有直接连接的路由。
直接连接的网络是特定路由器可以到达的唯一网络。在我们的场景中,这意味着:
- HOST A 可以 ping 通 R1。
- R1 可以 ping 通 R2 的 s0/0/0 接口,但无法 ping 通 s0/0/1 接口。
- R2 可以 ping 通 R1 的 s0/0/0 接口,但无法 ping 通 fa0/0 接口或 HOST A。
- R2 可以 ping 通 R3 的 s0/0/0 接口,但无法 ping 通 fa0/0 接口或 HOST B。
- R3 可以 ping 通 R2 的 s0/0/1 接口,但无法 ping 通 s0/0/0 接口。
- HOST B 可以 ping 通 R3。
- 两台主机(HOST A 和 HOST B)无法互相 ping 通。
- R1 和 R3 无法互相 ping 通。
下图展示了所有直接连接的网络。
静态路由
静态路由是实现远程网络通信的一种方式。在生产网络中,静态路由主要用于从特定网络到桩网络的路由配置。
桩网络是指只能通过一个点或一个接口访问的网络。
在上述场景中,192.168.1.0/24 和 192.168.4.0/24 网络是桩网络。这意味着,这些网络段中的主机与其他主机通信只有一条路径:对于 192.168.1.0/24 网络是通过 R1,而对于 192.168.4.0/24 网络是通过 R3。
理解桩网络对于理解静态路由至关重要。
配置静态路由所需的命令如下:
Router(config)# ip route (网络地址) (子网掩码) (下一跳IP地址/出口接口)
下表解释了 ip route
命令中每个参数的含义,并提供了一个示例,说明如何在 R1 上配置到 R3 的局域网网络(192.168.4.0/24)的静态路由。
参数 | 含义 | 示例 |
---|---|---|
Ip route | 表明正在配置的是静态路由 | ip route |
Network-address | 目标网络的网络地址,即希望到达的网络地址 | 192.168.4.0 |
Subnet-mask | 希望到达的目标网络的子网掩码 | 255.255.255.0 |
Next hop ip address | 连接到目标网络的下一跳路由器的IP地址 | 192.168.2.4 |
Exit interface | 路由器上连接到将带我到目标网络的路由器的出口接口 | s0/0/0 |
请参考示例。
因此,要在 R1 上为网络 192.168.4.0/24 配置静态路由,需在 R1 上输入以下命令:
R1(config)# ip route 192.168.3.0 255.255.255.0 192.168.2.4
R1(config)# ip route 192.168.4.0 255.255.255.0 192.168.2.4
或者:
R1(config)# ip route 192.168.3.0 255.255.255.0 s0/0/0
R1(config)# ip route 192.168.4.0 255.255.255.0 s0/0/0
注意: 配置静态路由时,
只能使用出口接口或下一跳IP地址,而不能同时使用两者。这一点将在后面详细说明。
查看R1上的路由表:
在 R1 上 show ip route
输出的底部用红色突出显示的部分,是我们刚刚添加的静态路由。开头的 “S” 表示该路由是通过静态路由配置加入路由表的。
括号中的 “1” 是静态路由的管理距离,“0” 是度量值。
由此我们可以假设从 HOST A 到 HOST B 的 ping 应该可以成功,对吧?
让我们尝试从 HOST A ping HOST B,看看会发生什么。
正如上图所示,所有从 HOST A 到 HOST B 的四次 ping 都显示请求超时。此外,底部用红色突出显示的部分表明,HOST B 没有接收到任何数据包,这意味着它们无法通信。
在下一部分,我们将探讨为什么两个主机无法通信,尽管 R1 已正确配置了静态路由。
路由表原则
以下是决定路由器如何通信的三条路由表原则。
原则1
“路由器仅根据其路由表中的信息转发数据包。”
R1 有两条路由:192.168.3.0/24(R2 和 R3 之间的连接)和 192.168.4.0/24(HOST B 所在的网络)。因此,根据第一条原则,R1 仅基于这些信息做出转发决策。它不会咨询 R2 或 R3,也不知道这些路由器是否有其他网络的路由信息。作为网络管理员,我们的职责是确保网络中的所有路由器了解远程网络的信息。
原则2
“一个路由器上的路由信息并不意味着域中的其他路由器也有相同的信息。”
R1 并不了解 R2 路由表中的信息,R2 和 R3 也一样。因此,尽管 R1 有通往 R2 和 R3 的网络的路径,但并不意味着 R2 和 R3 也有相同的路由信息。
例如,R1 可以通过 R2 到达网络 192.168.4.0/24,但 R1 并不知道 R2 是否可以到达连接 R3 的网络。因此,我们需要在 R2 上配置到 R3 局域网的路由。
根据原则 2,我们仍需在其他路由器(R2 和 R3)上正确配置路由,以确保它们知道这三个网络的路由。
原则3
“路由器到远程网络的路由并不意味着远程路由器有返回路径。”
此原则意味着,当在一个路由器上配置路由时,必须在远程路由器上配置返回路由。在我们的网络中,大多数通信是双向的,这意味着每次发送消息时都需要收到回复。
以邮局为类比,这就像发送一封没有回信地址的信。收信人无法回复这封信,邮递员也不知道该将信寄往何处。
在我们的场景中,这意味着当我们在 R1 上配置到网络 192.168.4.0/24 的路由时,我们需要在远程路由器上配置通向 R1 的局域网的路由。
根据原则 3 的指导,我们将在其他路由器上正确配置静态路由,以确保它们有返回到网络 192.168.1.0/24 的路由。
应用这些原则
在此场景中,我们需要在所有路由器上应用这三条原则,以使静态路由正常工作。
原则 1
R1 知道如何到达网络 192.168.3.0/24 和 192.168.4.0/24,但 R2 和 R3 并不知道。因此,我们需要在 R2 上配置静态路由,以使其知道如何到达 192.168.4.0/24。
原则 2
尽管我们在 R1 上配置了静态路由,但这并不意味着 R2 知道通往 192.168.4.0/24 的路径。因此,R2 需要知道该网络。
原则 3
即使 R1 和 R2 有到网络 192.168.4.0 的路由,ping 仍然会失败,因为 R2 和 R3 不知道如何返回 R1。因此,我们需要在 R1 上配置到网络 192.168.1.0/24 的返回路由。在本例中,我们在 R2 和 R3 上使用下一跳 IP 地址。
通过以上分析,我们可以在所有路由器上进行必要的配置,以实现 HOST A 和 HOST B 之间的通信。
在路由器 R2 上的配置
R2(config)# ip route 192.168.1.0 255.255.255.0 192.168.2.3
R2(config)# ip route 192.168.4.0 255.255.255.0 192.168.3.3
在路由器 R3 上的配置
R3(config)# ip route 192.168.1.0 255.255.255.0 192.168.3.4
R3(config)# ip route 192.168.4.0 255.255.255.0 192.168.3.4
完成对三台路由器的所有配置后,HOST A 和 HOST B 之间的通信应该是可行的。下图显示了所有三台路由器的路由表,其中静态路由用红色标出。
R1
R2
R3
由于以下输出,我们应该能够从主机A ping到主机B。以下输出显示了从主机A到主机B的ping结果。
输出显示来自主机B的回复,其IP地址为192.168.4.2,红色高亮部分显示4个数据包已发送,所有4个数据包都已被主机B接收,丢包率为0%。
因此,我们已成功在路由器上配置了静态路由。
解决下一跳IP地址的问题
假设我们在R2上配置了下一跳IP地址,而不是出口接口,路由器如何知道通过哪个接口发送数据包?
下图显示了R2上show ip route
命令的输出。
当路由器想要将数据包发送到192.168.1.0网络时,它将查看路由表。
路由表中有一条通往该网络的路由,下一跳是192.168.2.3。然后,路由器检查是否有与192.168.2.3网络连接的接口。在这种情况下,连接到该网络的接口是蓝色高亮部分所示的网络。出口接口是serial 0/0/0。
只有下一跳IP地址而没有出口接口的路由,必须通过路由表中的路由来解析下一跳IP地址,该路由连接到远程网络。
在大多数情况下,下一跳解析到的路由通常是直接连接的网络。
因此,这通常是一个问题,因为路由器必须处理数据包两次才能确定将其转发到哪里。这被称为递归查找。
建议静态路由使用出口接口,而不是下一跳IP地址。
汇总路由和默认路由
假设一台路由器连接了多个LAN,使用一个覆盖所有LAN的地址并配置一条静态路由会更为实用。以这个场景为例,R1连接了5个LAN:
- 192.168.1.0/24
- 192.168.2.0/24
- 192.168.3.0/24
- 192.168.4.0/24
- 192.168.5.0/24
这些路由的汇总如下表所示。
前两个八位字节和第三个八位字节从左侧开始的前五个位相同。
因此,针对这5个网络的新的汇总网络地址和子网掩码为:192.168.0.0/21,子网掩码为255.255.248.0。
在R2上配置到汇总网络的静态路由,命令如下:
R2(config)# ip route 192.168.0.0 255.255.248.0 s0/0/0
参考下面所示的图示。假设主机A想要发送电子邮件给朋友或查看互联网网站,路由器如何知道将数据包发送到哪里?
互联网有很多IP地址,配置一条静态路由到特定网络是行不通的。因此,需要配置默认路由。
默认静态路由是一条将匹配所有数据包的路由。默认静态路由的使用场景包括:
-
当路由表中没有其他路由匹配数据包的目标IP地址时。换句话说,当没有更具体的匹配存在时。一个常见的用途是在将公司的边缘路由器连接到ISP网络时。
-
当路由器只有一个连接的其他路由器时。这种情况称为“存根路由器”(Stub Router)。
配置静态默认路由的语法为:
Router(config)# ip route 0.0.0.0 0.0.0.0 [下一跳IP地址/出口接口]
到这个网络的路由会告诉路由器转发任何没有路由匹配的包,指向指定的下一跳IP地址或出口接口。
在这种情况下,要配置默认静态路由,R1上的命令序列将是:
R1(config)# ip route 0.0.0.0 0.0.0.0 12.145.3.2
或者
R1(config)# ip route 0.0.0.0 0.0.0.0 s0/0/0
相关文章:

【网络协议】静态路由详解
网络中的路由器通过以下两种方式之一发现远程网络: 静态配置路由动态路由协议 在本文,我们将学习关于静态路由的各种概念,例如如何配置静态路由、路由表如何进行决策、路由接口等相关知识。 文章目录 引言直连网络静态路由路由表原则原则1原…...

朝天椒USB服务器在银泰证券虚拟化超融合场景的应用案例
在数字化浪潮席卷金融行业的今天,银泰证券作为业内知名的金融机构,始终致力于提升业务运营效率与数据安全性。面对虚拟化超融合场景下各种认证U盾的管理挑战,银泰证券选择了朝天椒USB服务器作为其解决方案,成功实现了U盾在虚拟机中…...

.NET framework、Core和Standard都是什么?
对于这些概念一直没有深入去理解,以至于经过.net这几年的发展进化,概念越来越多,越来越梳理不容易理解了。内心深处存在思想上的懒惰,以为自己专注于Unity开发就好,这些并不属于核心范畴,所以对这些概念总是…...

FairGuard游戏安全2024年度报告
导 读:2024年,国内游戏市场实际销售收入3257.83亿元,同比增长7.53%,游戏用户规模6.74亿人,同比增长0.94%,市场收入与用户规模双双实现突破,迎来了历史新高点。但游戏黑灰产规模也在迅速扩大&…...
JetBrains IDEs和Visual Studio Code的对比
JetBrains IDEs和Visual Studio Code的对比 JetBrains IDEs是捷克JetBrains公司开发的一系列集成开发环境(IDE)。以下是具体介绍:IntelliJ IDEA是JetBrains 公司的一款产品 主要产品 IntelliJ IDEA:一款功能强大且广泛应用的Java集成开发环境,有开源免费的社区版和商业收…...

文件剪切走:深度解析与高效恢复策略
一、文件剪切走现象解读 在计算机的日常使用中,“文件剪切走”这一术语形象地描述了文件在移动过程中意外丢失的现象。当用户尝试将文件从一个位置“剪切”并粘贴到另一个位置时,如果操作不当或系统出现异常,可能会导致文件在源位置消失&…...

Win32汇编学习笔记09.SEH和反调试
Win32汇编学习笔记09.SEH和反调试-C/C基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net SEH - structed exception handler 结构化异常处理 跟筛选一样都是用来处理异常的,但不同的是 筛选器是整个进程最终处理异常的函数,但无法做到比较精细的去处理异常(例如处理…...
[人工智能]CSDN创作助手体验
一、什么是智能体 智能体是一种能够感知环境、学习、推理和行动的实体。它可以是一个计算机程序、机器人或其他类似的系统。智能体的目标是通过与环境的交互来实现特定的任务或目标。 智能体通常由以下几个组件组成: 感知器:感知器是智能体与环境之间的…...

vue3中el-table实现多表头并表格合并行或列
1、el-table中添加事件 :span-method"genderSpanCity" <el-table :span-method"genderSpanCity":data"data.tableData":fit"true" table-layout"fixed" header-align"center" stripestyle"width:100%;he…...

HTML+CSS+JS制作中国传统节日主题网站(内附源码,含5个页面)
一、作品介绍 HTMLCSSJS制作一个中国传统节日主题网站,包含首页、节日介绍页、民俗文化页、节日活动页、联系我们页等5个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。 二、页面结构 1. 顶部横幅区 包含传统中国风格的网站标题中国传统…...

时空笔记:CBEngine(微观交通模拟引擎)
CBEngine 是一个微观交通模拟引擎,可以支持城市规模的道路网络交通模拟。CBEngine 能够快速模拟拥有数千个交叉路口和数十万辆车辆的道路网络交通。 以下内容基本翻译自CBEngine — CBLab 1.0.0 documentation 1 模拟演示 1.0 模拟演示结构 config.cfg 定义了 roa…...

【LeetCode】力扣刷题热题100道(26-30题)附源码 轮转数组 乘积 矩阵 螺旋矩阵 旋转图像(C++)
目录 1.轮转数组 2.除自身以外数组的乘积 3.矩阵置零 4.螺旋矩阵 5.旋转图像 1.轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 class Solution { public:void rotate(vector<int>& nums, int k) …...

【C++】字符串的 += 和 + 运算详解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯1. 字符串的 和 基本用法1.1 的用法1.2 的用法 💯2. 示例代码的剖析与解释代码分析 💯3. 底层实现与性能分析3.1 的实现原理3.2 的实现原理3.…...

多模态大模型部署:结合dify
文章目录 前言minicpm-vDify测试一下总结部署过程回顾集成与测试实验结果分析展望未来 前言 上回说道,我们用ollama部署了一个多模态的大模型,也就是minicpm-v: 但这玩意儿感觉只能打字啊。 怎么给它发图片呢? minicpm-v Mini…...
Matlab Steger提取条纹中心(非极大值抑制)
文章目录 一、简介二、实现代码三、实现效果一、简介 由于在确定条纹的ROI区域之后,会计算出多个条纹中心坐标,因此这里就需要对其进行则优选择,毕竟条纹只有一条,这最简单的方式就是使用非极大值抑制,即选择每一行/列最好的条纹中心。 二、实现代码 Hessian2D.m function…...

springboot + vue+elementUI图片上传流程
1.实现背景 前端上传一张图片,存到后端数据库,并将图片回显到页面上。上传组件使用现成的elementUI的el-upload。、 2.前端页面 <el-uploadclass"upload-demo"action"http://xxxx.xxx.xxx:9090/file/upload" :show-file-list&q…...

LabVIEW 系统诊断
LabVIEW 系统诊断是指通过各种工具和方法检测、评估、分析和解决 LabVIEW 程序和硬件系统中可能存在的故障和性能问题。系统诊断不仅涵盖软件层面的调试与优化,还包括硬件交互、数据传输、实时性能等方面的检查和分析。一个成功的系统诊断能够显著提升LabVIEW应用程…...

韩国机场WebGIS可视化集合Google遥感影像分析
目录 前言 一、相关基础数据介绍 1、韩国的机场信息 2、空间数据准备 二、Leaflet叠加Google地图 1、叠加google地图 2、空间点的标记及展示 3、韩国机场空间分布 三、相关成果展示 1、务安国际机场 2、有同类问题的机场 四、总结 前言 12月29日8时57分左右务安国际机…...

springCloudGateWay使用总结
1、什么是网关 功能: ①身份认证、权限验证 ②服务器路由、负载均衡 ③请求限流 2、gateway搭建 2.1、创建一个空项目 2.2、引入依赖 2.3、加配置 3、断言工厂 4、过滤工厂 5、全局过滤器 6、跨域问题...
使用new Vue创建Vue 实例并使用$mount挂载到元素上(包括el选项和$mount区别)
new Vue({...}) 是创建一个新的 Vue 实例的方式。你可以通过传递一个选项对象来配置这个实例。常见的选项包括: •data:定义组件的数据属性。 •el:指定 Vue 实例应该挂载到哪个 DOM 元素上(通常是一个选择器字符串,如…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...

使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...