HCIA笔记6--路由基础与静态路由:浮动路由、缺省路由、迭代查找

news2025/2/25 4:35:26

文章目录

      • 0. 概念
      • 1.路由器工作原理
      • 2. 跨网访问流程
      • 3. 静态路由配置
      • 4. 静态路由的应用场景
        • 4.1 路由备份
        • 4.2 浮动路由
        • 4.3 缺省路由
      • 5. 迭代路由
      • 6 问题
        • 6.1 为什么路由表中有的下一跳的地址有接口?
        • 6.2 个人电脑的网关本质是什么?

0. 概念

自治系统:一个统一管理的大型网络,由路由器组成的集合。
路由器隔离广播域,交换机隔离冲突域。

1.路由器工作原理

路由器根据路由表进行转发数据包;

  1. 路由表中没有路由,直接丢弃该数据包
  2. 路由表中只有一条路由匹配目标ip时,直接根据路由表项进行转发。
  3. 路由表中有多个路由表项匹配数据包的目标ip时:
    • 最长掩码匹配原则
    • 掩码相同,比较外部路由优先级,数值越小越优先
    • 外部路由优先级相同,比较内部路由优先级
    • 如果内部路由优先级相同,则比较开销值,数值越小越优先
    • 如果开销值相同,则认为两条路都是最优路径,形成负载分担

路由表项
在这里插入图片描述

2. 跨网访问流程

在这里插入图片描述

  1. PC1 请求访问PC2, PC1发现两者不在同一个网段

  2. PC1请求网关mac地址,如果PC1的arp缓存表中无网关mac地址;则进行发起arp广播来获取网关AR1的mac地址。

  3. PC1封装数据包,并将其发往路由器AR1的g0/0/1口。
    dip: 192.168.2.1
    sip: 192.169.1.1
    dmac: ar1_g001_mac
    smac:pc1_mac

  4. 路由器AR1在路由表项中查找去往192.168.2.1的下一跳的IP地址(10.1.12.2); 路由器在arp缓存表中查找下一跳的mac地址;如果没找到,则进行arp广播获得下一跳的mac地址。

  5. 路由器AR1封装数据包,并将其从g0/0/0口发给下一跳路由器AR2的g0/0/0口。
    dip: 192.168.2.1
    sip: 192.169.1.1
    dmac: ar2_g000_mac
    smac: ar1_g000_mac

  6. 路由器AR2收到AR1发来的数据包,查找路由表发现下一跳IP地址(192.168.2.1/24),与自己同网段;查找自己的arp缓存中是否有PC2(192.168.2.1)的mac地址。如果没有,则进行arp广播请求PC2的mac地址。

  7. 路由器AR2封装数包,并将其从g0/0/1口发往下一跳PC2。
    dip: 192.168.2.1
    sip: 192.169.1.1
    dmac: pc2_mac
    smac: ar2_g001_mac

  8. PC2收到PC1发送的数据包

3. 静态路由配置

  • 给路由器接口配置ip
ip address 192.168.1.254 24
  • 查看路由器的路由表
display ip routing-table

在这里插入图片描述
路由表项会额外加上广播地址和网络号地址

  • 查看路由表接口ip信息
display ip interface brief

在这里插入图片描述

  • 配置静态路由表项
ip route-static 192.168.2.0 24 10.1.12.2
# ip route-static 目标IP地址 目标IP地址子网掩码 下一跳IP地址

路由表项
在这里插入图片描述

4. 静态路由的应用场景

4.1 路由备份

甲方要求在不增加过多的成本情况下实现冗余性。
冗余性体现在两方面,一方面是设备的冗余,另一方面是链路的冗余。
设备一般都比较贵,为了实现甲方的要求就做链路的备份。
链路的备份当然也是需要物理链路的存在作为先决条件的。如图所示,我们配置两条静态路由就实现了负载分担。

即上面跟下面的通过流量的大小大致相当。
顺带一提,流量的分控有两个。
(1)负载分担,它是基于流的;一个包的流由ip port proto五元组哈希形成。所以说一个给定的包走哪条路它是确定的。
(2)负载均衡,它是基于包的;上面一个包,下面一个包,流量是绝对相等的。

在这里插入图片描述
路由器1 2的路由表如下

在这里插入图片描述
在这里插入图片描述

我们可以注意到形成负载分担的两条路,它们其中有一个的目标网段是省略了的;其实就是和上面的网段相同。
在这里插入图片描述

4.2 浮动路由

假设两个路由器间有两条链路,一个是作为主链路(1000M),另一个备份链路(100M)。
如下图所示:
在这里插入图片描述
将备份链路的优先级调得比主链路低,配置如下:
在这里插入图片描述
当上面的1000M链路Down掉时,会切到下面的100M
比如上图中的路由器AR1g0/0/1挂掉的时候,下面的100M链路就会切换过来。此时两者的路由表如下
在这里插入图片描述
在这里插入图片描述
我们可以观察到路由表项中,有了优先级为100的路由表项。
在这里插入图片描述

重新开启路由器ar1g0/0/1口后,我们也可以直接查看静态路由的配置选项:

display ip routing-table protocol static 

在这里插入图片描述
会发现100优先级的路由是处于inactive状态的。

我们称优先级不同,目标网段相同,下一跳相同的两组路由叫作浮动路由
在线网中,不可能完全浪费链路带宽的,因此会引入一个叫策略路由对指定的流量来通过这个100M的备份链路的。

4.3 缺省路由

目标网段的网址和掩码都是0,它匹配的是任意网络。

如图所示,路由器AR1的路由表中并没有直接到阿里192.168.4.1的表项;但是路由器AR1的下一跳永远都是AR2g0/0/1接口。

因此可以直接配置缺省路由0.0.0.0/0的下一跳地址为10.1.12.2
配置命令

ip route-static 0.0.0.0 0 10.1.12.2

查看AR1的路由表项
在这里插入图片描述

在这里插入图片描述
配置以后,我们发现PC1PC3是可以互通的。
图中的网络拓扑,其实右边可以看成外网,左边看作企业内网。我们的企业内部网关不知道用户请求的ip在哪,但是直连的肯定是运营商的路由器;因此可以设置企业网的缺省路由为运营商的路由器

但是向内网指肯定是不能有缺省路由的,否则两个缺省路由形成了负载分担,会造成用户请求的丢失。

5. 迭代路由

路由表项添加中,我们可以不知道目标网段,但是需要知道下一跳地址。

比如下面的网络拓扑中,如果在路由器AR1中添加一条去往PC2的下一跳为1.1.1.1的静态路由。

ip route-static 192.168.2.1 255.255.255.0 1.1.1.1

我们查看路由表发现并没有发现该表项出现
在这里插入图片描述
我们如果在此时添加一条去往1.1.1.1的下一跳为10.1.12.2的路由表,会发现路由表一下多了两条。这是因为进行了迭代查询,去往192.168.2.1的下一跳是1.1.1.1, 会在路由表中继续查,发现1.1.1.0/24的下一跳是10.1.12.2也就是出接口g0/0/1
在这里插入图片描述
迭代路由的标志是RD, 我们再在AR2上进行类似的配置即可实现PC1PC2的互通了。
AR2路由表:
在这里插入图片描述

在这里插入图片描述

6 问题

6.1 为什么路由表中有的下一跳的地址有接口?

因为下一跳连接的设备是唯一的。

6.2 个人电脑的网关本质是什么?

个人电脑配置网关地址,其实就是在配置缺省路由地址。
查看windows 下的路由表

route print

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libncurses.so.5的问题

20241129解决在Ubuntu20.04下编译中科创达的CM6125的Android10出现找不到库文件libncurses.so.5的问题 2024/11/29 21:11 缘起:中科创达的高通CM6125开发板的Android10的编译环境需要。 vendor/qcom/proprietary/commonsys/securemsm/seccamera/service/jni/jni_if.…

Matlab搜索路径添加不上

发现无论是右键文件夹添加到路径,还是在“设置路径”中专门添加,我的路径始终添加不上,导致代码运行始终报错,后来将路径中的“”加号去掉后,就添加成功了,经过测试,路径中含有中文也可以添加成…

自由学习记录(28)

C# 中的流(Stream) 流(Stream)是用于读取和写入数据的抽象基类。 流表示从数据源读取或向数据源写入数据的矢量过程。 C# 中的流类是从 System.IO.Stream 基类派生的,提供了多种具体实现,每种实现都针对…

Redis3——线程模型与数据结构

Redis3——线程模型与数据结构 本文讲述了redis的单线程模型和IO多线程工作原理,以及几个主要数据结构的实现。 1. Redis的单线程模型 redis6.0之前,一个redis进程只有一个io线程,通过reactor模式可以连接大量客户端;redis6.0为了…

使用playwright自动化测试时,npx playwright test --ui打开图形化界面时报错

使用playwright自动化测试时,npx playwright test --ui打开图形化界面时报错 1、错误描述:2、解决办法3、注意符号的转义 1、错误描述: 在运行playwright的自动化测试项目时,使用npm run test无头模式运行正常,但使用…

深度学习模型:门控循环单元(GRU)详解

本文深入探讨了门控循环单元(GRU),它是一种简化版的长短期记忆网络(LSTM),在处理序列数据方面表现出色。文章详细介绍了 GRU 的基本原理、与 LSTM 的对比、在不同领域的应用以及相关的代码实现,…

用html+jq实现元素的拖动效果——js基础积累

用htmljq实现元素的拖动效果 效果图如下&#xff1a; 将【item10】拖动到【item1】前面 直接上代码&#xff1a; html部分 <ul id"sortableList"><li id"item1" class"w1" draggable"true">Item 1</li><li …

单片机学习笔记 12. 定时/计数器_定时

更多单片机学习笔记&#xff1a;单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…

【乐企文件生成工程】搭建docker环境,使用docker部署工程

1、自行下载docker 2、自行下载docker-compose 3、编写Dockerfile文件 # 使用官方的 OpenJDK 8 镜像 FROM openjdk:8-jdk-alpine# 设置工作目录 WORKDIR ./app# 复制 JAR 文件到容器 COPY ../lq-invoice/target/lq-invoice.jar app.jar # 暴露应用程序监听的端口 EXPOSE 1001…

React基础知识三 router路由全指南

现在最新版本是Router6和Router5有比较大的变化&#xff0c;Router5和Router4变化不大&#xff0c;本文以Router6的写法为主&#xff0c;也会对比和Router5的不同。比较全面。 安装路由 npm i react-router-dom基本使用 有两种Router&#xff0c;BrowserRouter和HashRouter&…

【C#】书籍信息的添加、修改、查询、删除

文章目录 一、简介二、程序功能2.1 Book类属性&#xff1a;方法&#xff1a; 2.2 Program 类 三、方法&#xff1a;四、用户界面流程&#xff1a;五、程序代码六、运行效果 一、简介 简单的C#控制台应用程序&#xff0c;用于管理书籍信息。这个程序将允许用户添加、编辑、查看…

打造去中心化交易平台:公链交易所开发全解析

公链交易所&#xff08;Public Blockchain Exchange&#xff09;是指基于公有链&#xff08;如以太坊、波场、币安智能链等&#xff09;建立的去中心化交易平台。与传统的中心化交易所&#xff08;CEX&#xff09;不同&#xff0c;公链交易所基于区块链技术实现资产交换的去中心…

CLIP模型也能处理点云信息

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

关于NXP开源的MCU_boot的项目心得

MCU的启动流程细查 注意MCU上电第一个函数运行的就是Reset_Handler函数&#xff0c;下图是表示了这个函数做了啥事情&#xff0c;注意加强一下对RAM空间的段的印象&#xff0c;从上到下是栈&#xff0c;堆&#xff0c;.bss段&#xff0c;.data段。 bootloader的难点 固件完…

MySQL5.6升级MySQL5.7

升级方式介绍 08 数据库服务版本升级方法 5.6 – 5.7 – 8.0 数据库版本升级方法&#xff1a; Inplace-本地升级 步骤一&#xff1a;在同一台服务器中&#xff0c;需要部署高版本数据库服务实例步骤二&#xff1a;低版本数据库中的数据进行备份迁移&#xff0c;迁移到高版本…

怎么理解BeamSearch?

在大模型推理中&#xff0c;常会用到BeamSearch&#xff0c;本文就BeamSearch原理与应用理解展开讲解。 一、BeamSearch原理 Beam Search 是一种启发式搜索算法&#xff0c;常用于自然语言处理&#xff08;NLP&#xff09;和其他需要生成序列的任务中&#xff0c;比如机器翻译…

shodan2-批量查找CVE-2019-0708漏洞

声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&#…

SciPy Optimize和 CVXPY对比

CVXPY和SciPy Optimize模块都是在Python中解决优化问题的强大工具&#xff0c;但它们是为不同类型的问题而设计的&#xff0c;具有不同的优点和局限性。本文对比两者的优缺点&#xff0c;阐述各自的应用场景&#xff0c;同时解释常用求解器&#xff0c;并给出实际示例进行说明。…

DevOps工程技术价值流:GitLab源码管理与提交流水线实践

在当今快速迭代的软件开发环境中&#xff0c;DevOps&#xff08;开发运维一体化&#xff09;已经成为提升软件交付效率和质量的关键。而GitLab&#xff0c;作为一个全面的开源DevOps平台&#xff0c;不仅提供了强大的版本控制功能&#xff0c;还集成了持续集成/持续交付(CI/CD)…

Android Studio 右侧工具栏 Gradle 不显示 Task 列表

问题&#xff1a; android studio 4.2.1版本更新以后AS右侧工具栏Gradle Task列表不显示&#xff0c;这里需要手动去设置 解决办法&#xff1a; android studio 2024.2.1 Patch 2版本以前的版本设置&#xff1a;依次打开 File -> Settings -> Experimental 选项&#x…