【网络协议】静态路由详解

网络中的路由器通过以下两种方式之一发现远程网络:

  • 静态配置路由
  • 动态路由协议

在本文,我们将学习关于静态路由的各种概念,例如如何配置静态路由、路由表如何进行决策、路由接口等相关知识。

文章目录

    • 引言
    • 直连网络
    • 静态路由
    • 路由表原则
      • 原则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/24192.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上的路由表:

在这里插入图片描述
R1show ip route 输出的底部用红色突出显示的部分,是我们刚刚添加的静态路由。开头的 “S” 表示该路由是通过静态路由配置加入路由表的。

括号中的 “1” 是静态路由的管理距离,“0” 是度量值。

由此我们可以假设从 HOST AHOST B 的 ping 应该可以成功,对吧?

让我们尝试从 HOST A ping HOST B,看看会发生什么。

在这里插入图片描述

正如上图所示,所有从 HOST AHOST B 的四次 ping 都显示请求超时。此外,底部用红色突出显示的部分表明,HOST B 没有接收到任何数据包,这意味着它们无法通信。

在下一部分,我们将探讨为什么两个主机无法通信,尽管 R1 已正确配置了静态路由。

路由表原则

以下是决定路由器如何通信的三条路由表原则。

原则1

“路由器仅根据其路由表中的信息转发数据包。”

R1 有两条路由:192.168.3.0/24(R2R3 之间的连接)和 192.168.4.0/24(HOST B 所在的网络)。因此,根据第一条原则,R1 仅基于这些信息做出转发决策。它不会咨询 R2R3,也不知道这些路由器是否有其他网络的路由信息。作为网络管理员,我们的职责是确保网络中的所有路由器了解远程网络的信息。

原则2

“一个路由器上的路由信息并不意味着域中的其他路由器也有相同的信息。”

R1 并不了解 R2 路由表中的信息,R2R3 也一样。因此,尽管 R1 有通往 R2R3 的网络的路径,但并不意味着 R2R3 也有相同的路由信息。

例如,R1 可以通过 R2 到达网络 192.168.4.0/24,但 R1 并不知道 R2 是否可以到达连接 R3 的网络。因此,我们需要在 R2 上配置到 R3 局域网的路由。

根据原则 2,我们仍需在其他路由器(R2R3)上正确配置路由,以确保它们知道这三个网络的路由。

原则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,但 R2R3 并不知道。因此,我们需要在 R2 上配置静态路由,以使其知道如何到达 192.168.4.0/24。

原则 2

尽管我们在 R1 上配置了静态路由,但这并不意味着 R2 知道通往 192.168.4.0/24 的路径。因此,R2 需要知道该网络。

原则 3

即使 R1R2 有到网络 192.168.4.0 的路由,ping 仍然会失败,因为 R2R3 不知道如何返回 R1。因此,我们需要在 R1 上配置到网络 192.168.1.0/24 的返回路由。在本例中,我们在 R2R3 上使用下一跳 IP 地址。

通过以上分析,我们可以在所有路由器上进行必要的配置,以实现 HOST AHOST 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 AHOST 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/504231.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 复习总结记录六

C 复习总结记录六 模板初阶主要内容 1、泛型编程 2、函数模板 3、类模板 4、STL 简介 一 泛型编程 如何实现一个通用的交换函数 void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right…

Leecode刷题C语言之字符串中最大的3位相同数字

执行结果:通过 执行用时和内存消耗如下&#xff1a; char* largestGoodInteger(char* num) {int n strlen(num);char* res NULL;for (int i 0; i < n - 2; i) {if (num[i] num[i 1] && num[i 1] num[i 2]) {if (res NULL || strncmp(&num[i], res, 3)…

《繁星路》V1.8.3(Build16632266)官方中文学习版

《繁星路》官方中文版https://pan.xunlei.com/s/VODae2_2Z3QyMF02I5y321uHA1?pwdqgsh# 作为一款星际模拟游戏&#xff0c;完美融合了硬科幻元素与基地建设玩法&#xff0c;体验改造行星的恢弘与壮阔。化身人工意识AMI&#xff0c;遵照基本指示推进火星改造的各项工作&#xf…

《Spring Framework实战》9:4.1.4.依赖注入

欢迎观看《Spring Framework实战》视频教程 典型的企业应用程序不是由单个对象&#xff08;或Spring术语中的bean&#xff09;组成。即使是最简单的应用程序也有几个对象协同工作&#xff0c;以呈现最终用户所认为的连贯应用程序。下一节将解释如何从定义多个独立的bean定义到一…

STM32-笔记37-吸烟室管控系统项目

一、项目需求 1. 使用 mq-2 获取环境烟雾值&#xff0c;并显示在 LCD1602 上&#xff1b; 2. 按键修改阈值&#xff0c;并显示在 LCD1602 上&#xff1b; 3. 烟雾值超过阈值时&#xff0c;蜂鸣器长响&#xff0c;风扇打开&#xff1b;烟雾值小于阈值时&#xff0c;蜂鸣器不响…

云安全博客阅读(三)

WAF强固之盾&#xff1a;机器学习赋能下的语义分析 WAF 中&#xff0c;传统的基于正则的检测方法依赖正则的运营更新&#xff0c;以不断防护新的攻击方法&#xff1b; 主要流程为&#xff1a;HTTP包 -> payload解码 -> 正则匹配 但是&#xff0c;攻击者可以通过修改攻…

个人博客搭建(二)—Typora+PicGo+OSS

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚&#xff1a; 做个超努力的小奚-CSDN博客 一、前言 博客搭建完一直没有更新&#xff0c;因为WordPress自带的文档编辑器不方便&#xff0c;以前用CSDN写作的时候&#xff0c;习惯了Typora。最近对比了…

spring boot 集成 knife4j

1、knife4j介绍以及环境介绍 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案,前身是swagger-bootstrap-ui,取名knife4j是希望它能像一把匕首一样小巧,轻量,并且功能强悍!其底层是对Springfox的封装&#xff0c;使用方式也和Springfox一致&#xff0c;只是对接口…

案例解读 | 香港某多元化综合金融企业基础监控+网管平台建设实践

PART01 项目背景 01客户简介案例客户是一家创立20多年的香港某多元化综合金融企业&#xff0c;其业务范围涵盖证券、期货、资产管理、财富管理等&#xff0c;凭借广泛的业务网络和多元化的金融服务产品&#xff0c;在市场中拥有显著的影响力。02痛点分析随着业务版图的持续拓展…

KCP解读:C#库类图

本文是系列文章中的一篇&#xff0c;内容由浅到深进行剖析&#xff0c;为了方便理解建议按顺序一一阅读。 KCP技术原理 KCP解读&#xff1a;基础消息收发 KCP解读&#xff1a;重传机制 KCP解读&#xff1a;滑动窗口 KCP解读&#xff1a;拥塞控制 本系列的源码基于https://gith…

Nginx:Stream模块

什么是 Stream 模块? Stream 模块 是 Nginx 的一个核心模块,专为处理非 HTTP 协议的流量(TCP 和 UDP 流量)而设计。它可以用来负载均衡和代理 TCP 或 UDP 连接,适用于多种应用场景,如: 数据库集群(MySQL、PostgreSQL 等)邮件服务器(SMTP、IMAP、POP3)游戏服务器VoI…

Profinet转EtherNet/IP网关连接AB PLC的应用案例

某大型制造企业的生产车间同时采用了西门子 S7 - 1500 PLC 作为核心控制系统的一部分&#xff0c;负责主要生产流程的控制与数据处理&#xff1b;而在特定生产环节&#xff0c;由于历史设备遗留或工艺配套需求&#xff0c;存在使用 AB PLC 的情况。这就导致了在整个自动化生产系…

arcgisPro加载CGCS2000天地图后,如何转成米单位

1、导入加载的天地图影像服务&#xff0c;一开始是经纬度显示的。 2、右键地图&#xff0c;选择需要调整的投影坐标&#xff0c;这里选择坐标如下&#xff1a; 3、点击确定后&#xff0c;就可以调整成米单位的了。 4、切换后结果如下&#xff1a; 如有需要&#xff0c;可调整成…

2025新春烟花代码(二)HTML5实现孔明灯和烟花效果

效果展示 源代码 <!DOCTYPE html> <html lang"en"> <script>var _hmt _hmt || [];(function () {var hm document.createElement("script");hm.src "https://hm.baidu.com/hm.js?45f95f1bfde85c7777c3d1157e8c2d34";var …

机器人技术:ModbusTCP转CCLINKIE网关应用

在当今自动化生产与智能制造领域&#xff0c;ModbusTCP转CC-LinkIE网关KJ-MTCPZ-CCIES的应用正日益成为提升生产效率、实现设备间高效通信的重要技术手段。这一转换技术不仅打破了不同通信协议间的壁垒&#xff0c;还为机器人产品的应用提供了更为广阔的舞台。ModbusTCP作为一种…

Openwrt @ rk3568平台 固件编译实践(二)- ledeWRT版本

目录 ledeWRT介绍固件编译下载代码修改feed源更新并安装编译第三方软件包制作用于eMMC烧写的rootfs基于lede发行版验证烧写rk3568.img, LEDE wrt启动成功refhttps://blog.csdn.net/zc21463071/article/details/106751361介绍rk3568平台下, lede 大神版 openwrt固件的下载、编译…

【linux系统之redis6】redisTemplate的使用方法

新版本的application.yml配置文件 spring:data:redis:host: 192.168.1.102port: 6379lettuce:pool:max-active: 8min-idle: 1max-idle: 0max-wait: 100redisTemplate使用方法 <dependencies><dependency><groupId>org.springframework.boot</groupId>…

【算法】字符串算法技巧系列

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 引入&#xff1a;字符串相关算法技巧 1&#xff1a;字符串转数组 2&#xff1a;子字符串 3&#xff…

掌握正则表达式:从入门到精通的实战指南

文章目录 &#x1f30d;一.正则表达式❄️1.为什么学习正则表达式❄️ 2.基本介绍❄️3.分析底层实现 &#x1f30d;二.正则表达式的语法❄️1.字符匹配❄️2.量词❄️3.定位符4.分组和引用❄️6.非贪婪匹配❄️7.分支结构❄️实际应用 &#x1f30d; 三.正则标表达式的三个常用…

leetcode 5. 最长回文子串

题目如下 本题可以这么来想设有一个回文串s"112211"当我们去掉左右两边的"1"时s任然是回文串。 反过来说现有字符串 "x1221y"(x,y都是未知字符)当且仅当x y时这个字符串是回文串。 故我们可以令i j为某一个字符串的左右两端然后有如下情况: i…