【网络层】直连路由、静态路由、动态路由
文章目录
- 路由表
- 直连路由
- 直连路由 技术背景
- 直连路由 实战训练
- 静态路由
- 静态路由 技术背景
- 静态路由 概述
- 静态路由 配置命令
- 静态路由 实战训练
- 动态路由
- 动态路由 技术背景
- 路由协议概述
- 路由协议分类
路由表
路由表的形成,路由的来源:
路由来源 | 备注 |
---|---|
直连路由 | 路由器接口上的网络 (接口配置IP地址并且UP出现) |
静态路由 | 由网络管理员手工指定的路由。当网络拓扑发生变化时,管理员需要手工更新静态路由。 |
动态路由 | 路由器使用路由协议从其他路由器那里获悉路由。当网络拓扑发生变化时,路由器会自动更新路由信息。 |
直连路由
直连路由 技术背景
如果要连接两个不同网段直接通信,只需要一个路由设备就可以完成。将两个网段的直连接入路由设备就能实现不同网段设备通信,并配置两条直连路由就能完成不同网段之间设备通信。
直连路由 实战训练
想要实现两个网段之间通信其实很简单,只要满足两个条件:
1、找根网线将设备接入路由设备接口;
2、配置两端的IP地址。
确保两边端口是up的状态。
在eNSP中搭建拓扑
system-view
interface g0/0/0
ip address 192.168.10.1 24
interface g0/0/1
ip address 10.0.0.1 24display ip interface brief
display ip routing-table
查看接口状态是不是up状态(下图显示是up的状态)
这样就能 生成直连路由,快来用命令看看
生成三条路由信息:主机路由,本机路由,广播路由
静态路由
静态路由 技术背景
直连路由设备的端口是有限的,如果说是只用一个路由设备连接网段的话,只能连接有限网段,很容易就到瓶颈。因此静态路由就是解决这个问题,添加路由器相连配置静态路由实现多网段通信。
静态路由 概述
- 配置简单、开销小
- 通过手动配置进行添加和维护
- 无法根据拓扑的变化而自适应
- 适合于组网规模较小的场景,在大型网络环境,则配置及维护成本很高
- 在大型网络中,往往采用动、静态路由结合的方式部署网络
静态路由 配置命令
命令 | 备注 |
---|---|
Ip route-static 目标网络 子网掩码/前缀 下一跳/出接口 | 配置静态路由 |
静态路由 实战训练
在eNSP中搭建拓扑,实验目的:实现所有不同网段的PC设备都能互相ping通
配置AR5路由器 直连路由
1、将三个接口的 ip 按照拓扑图配置好
system-view
sysname Route5
interface g0/0/0
ip address 12.0.0.2 24
interface g0/0/1
ip address 1.0.0.1 24
interface g0/0/2
ip address 2.0.0.1 24
2、配置pc端 ip地址以及网关
3、配置AR4路由器 直连路由
system-view
sysname Route4
interface g0/0/0
ip address 4.0.0.12 24
interface g0/0/1
ip address 12.0.0.1 24
4、配置pc4端 ip地址以及网关
至此配置完直连路由后,PC5和PC6是可以ping 通的。但是PC4是ping 不同其他PC机,同样其他PC也是ping 不通PC4的。
原因在于当PC4 中输入ping 1.0.0.10的时候,AR4查找路由表时并没有找到去往 1.0.0.10的路由条目,就会丢弃报文。因此要在AR4中添加一条去往1.0.0.0网段的静态路由,让其知道下一跳要去往哪里。
同样要想ping 通2.0.0.20的设备,也是要添加一条去往2.0.0.0网段的静态路由。
5、AR4 中配置去往2.0.0.0网段静态路由, 配置如下:
ip route-static 1.0.0.0 24 12.0.0.2
ip route-static 2.0.0.0 24 12.0.0.2
使用 display ip routing-table 命令,查看AR4 现在的路由表:
AR4 配置完静态路由之后,PC4 发给PC5和PC6的数据包就能发出去了。但是路由是双向的,当PC5和PC6给PC4回复数据包的时候,AR5中没有去往4.0.0.0 网段的路由,因此数据包也是会被丢弃。也就是说现在的配置 PC4和其他PC之间还是不能互相通讯。
6、AR5 中配置去往4.0.0.0网段静态路由, 配置如下:
ip route-static 4.0.0.0 24 12.0.0.1
使用 display ip routing-table 命令,查看AR5 现在的路由表:
这就完成了这个拓扑中的路由配置,相互ping下PC设备,成功!!!
动态路由
动态路由 技术背景
静态路由是依靠网络管理员手动设置路由,这种方式有个缺点就是当要在很庞大的网络拓扑中添加/删除一各设备,就要在网络中手动添加/删除很多地方相关的静态路由,并且维护也是很麻烦的事情。为了解决这个问题引入动态路由。
动态路由器使用路由协议从其他路由器那里获悉路由。当网络拓扑发生变化时,路由器会自动更新路由信息。也就是动态路由在发生拓扑变更时,能够动态感知,无需人工干预。
路由协议概述
- 路由器之间交互的一种语言
- 共享路由信息
- 维护路由器、提供最佳转发路径
路由协议分类
路由协议分类:根据作用范围
类型 | 备注 | 区别 |
---|---|---|
IGP 内部网关协议(Interior gateway protocol) | 用于一个AS内部交互路由信息 常用协议:RIP、OSPF、ISIS、EIGRP | 路由器相互信任 (同一管理机构) 路由数量较少 注重发现路由,不需要什么策略 |
EGP 外部网关路由协议(Exterior gateway protocol) | 用于不同AS之间交互路由信息 常用协议:BGP | 路由器并非相互信任 (不同管理机构) 路由数量庞大 注重于引入路由,策略丰富 |
AS(autonomous system) | 处于同一管理机构下的网络(如:企业、电信、移动、联通) |
自治系统(AS)
互联网就像一个庞大的城市,而自治系统(AS)就像是这个城市中的不同区域或社区。每个社区都有自己的规则和管理系统,它们可能有不同的建筑风格、交通规则和社区服务。
特性:
社区边界:自治系统的边界就像社区的围墙,它们定义了社区的范围。在网络中,这些边界由路由器和防火墙等网络设备来维护。
社区管理:每个自治系统都有自己的网络管理员,他们负责管理社区内的网络流量和安全。就像社区的物业管理一样,他们确保网络运行顺畅,没有拥堵或安全问题。
内部交通:在社区内部,居民(数据包)可以在社区的道路上自由移动。在网络中,这相当于自治系统内部的路由协议,它帮助数据包在自治系统内部找到最佳路径。
外部交通:当居民需要去其他社区时,他们可能会使用公共交通工具,比如公交车或地铁。在网络中,这就是边界网关协议(BGP),它允许不同的自治系统之间交换路由信息,以便数据包能够找到从一个自治系统到另一个自治系统的路径。
社区标识:每个社区都有一个独特的名称或编号,以便在城市中识别。在网络中,这就是自治系统号(ASN),它是一个独特的数字,用来在BGP通信中标识不同的自治系统。
社区间的合作:尽管每个社区都有自己的规则,但它们之间需要合作以确保整个城市的交通流畅。在网络中,这意味着自治系统之间需要通过BGP等协议来协调路由信息,以确保数据包能够在整个互联网中高效地传输。
路由协议分类:根据协议算法
DV 距离矢量(distance-vector):基于距离矢量算法,路由器并不了解网络拓扑信息。(根据跳数来选择路由) 交互路由信息都会修改原始参数 (类似路旁)。如:RIP、EIGRP
LS 链路状态(link-state):基于SPF算法(shortest path first 最短路径优先),路由器了解完整的网络。(根据链路带宽来选择路由) 交互路由信息直接传递不会修改原始参数(类似地图,完整)。如:OSPF、ISIS
路由协议分类:根据发送的更新是否携带掩码
不携带掩码:默认的路由掩码都是默认的,影响路由选路
类型 | 备注 |
---|---|
Classful有类 | 不携带掩码 如:RIPv1、IGRP、EGP |
clasless无类 | 携带掩码 如:RIPv2、EIGRP、OSPF、BGP |
路由协议分类:根据业务应用
类型 | 备注 |
---|---|
Unicast routing protocol 单播路由协议 | 如:RIP、EIGRP、OSPF、BGP、ISIS |
Multicast routing protocol组播路由协议 | 如:DVMRP、PIM-SM、PIM-DM |
路由协议配置规则:
- 协议是在接口运行的 (需要宣告接口的IP地址/接口开启协议)
- 只能学习和发布运行相同协议的路由信息(不同路由协议之间互不干扰)
- 不同路由协议之间需要交互路由信息,需要进行引入/注入(Import)
注:引入必须要同时运行多个协议的路由器做中间人/代理
路由器收敛:
- 当所有路由表的信息都有一致的网络可达信息(相同的目的地址)
- 网络(路由)进入一个稳定状态
- 网络在达到收敛前无法完全正常工作
选择/衡量动态路由协议的一些性能指标:
指标 | 备注 |
---|---|
正确性 | 能够正确的找到最优且无环的路由 |
收敛快 | 当网络发生变化后,能够快速做出响应 |
低开销 | 协议自身的开销(占用内存、CPU、带宽) |
安全性 | 协议具有安全机制 |
普适度 | 适合各种拓扑结构和各种规模的网络 |
相关文章:

【网络层】直连路由、静态路由、动态路由
文章目录 路由表直连路由直连路由 技术背景直连路由 实战训练 静态路由静态路由 技术背景静态路由 概述静态路由 配置命令静态路由 实战训练 动态路由动态路由 技术背景路由协议概述路由协议分类 路由表 路由表的形成,路由的来源: 路由来源备注直连路由…...

tkinter用法总结
Tkinter 是 Python 标准库中的一个模块,用于创建图形用户界面 (GUI)。它是 Python 中最常用的 GUI 库之一,因为它集成在 Python 的标准发行版中,无需额外安装即可使用。 一、基本用法 1. 简单示例 import tkinter as tk# 创建主窗口 root …...

iOS基础-Block
系列文章目录 文章目录 系列文章目录一、Block是什么二、Block的使用场景1. 异步操作和完成处理器2. 动画3. 集合操作4. 定时器5. 自定义控件的事件处理6.错误处理 三、Block的底层实现1.结构分析2.Block的类型3.Block的copy4.变量捕捉 四、Block的使用细节1.auto变量的生命周期…...

本地图片瀑布流浏览器asonry Image Viewer
本地图片瀑布流浏览器asonry Image Viewer 前言效果图部分源码领取完整源码下期更新 前言 一款采用 HTML 的瀑布流本地图片浏览器「Masonry Image Viewer」只需要把你的图片文件夹拖到下载的 index 网页文件里面就可以实现瀑布流效果。项目免费开源,据介绍采用了HT…...

macos重装系统 启动U盘制作方法 - createinstallmedia 命令使用方法总结
macos重装系统比windows要稍微复杂一些,不过还好,macos系统安装app这个Apple官方提供的系统软件里面默认就内置了一个可用为我们制作启动盘的工具 createinstallmedia 我们下载的apple安装镜像要门是 dmg/pkg/iso 的压缩档案格式的,要么是 x…...

八问八答搞懂Transformer内部运作原理
最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是,当前职场环境已不再是那个双向奔赴时代了。求职者在变多,HC 在变少,岗位要求还更高了。 最近,我们又陆续整理了很多大厂的面试题,帮助一些球友…...

MySQL增删改查(基础)
1、. 新增(Create) 语法: INSERT [INTO] table_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ... 例子: -- 创建一张学生表 DROP TABLE IF EXISTS student; CREATE TABLE student (id INT,sn INT com…...

Cairo库移植到安卓记录
前言 接Android Studio引入ndk编译的so库的故事,这个东西搞了两周以后,由于自己不熟悉Java和安卓开发,踩了不少坑,其中一周时间都是花在怎么用Android Studio上的。。。AS下的新版本Koala,结果网上资料全是旧版本&…...

Redis 哈希类型的常用命令总结
1. hset 设置哈希表中字段的值。 hset key field value示例: hset user:1000 name "Alice"2. hget 获取哈希表中字段的值。 hget key field示例: hget user:1000 name3. hgetall 获取哈希表中所有的字段和值。 hgetall key示例&#x…...

【物联网设备端开发】ESP开发工具:QEMU如何模拟以太网口接入网络
以太网口支持 ESP-IDF中添加了对Opencores以太网MAC的支持。 运行以太网示例时,启用CONFIG_EXAMPLE_CONNECT_ETHERNET和 CONFIG_EXAMPLE_USE_OPENETH.。运行自定义应用程序时,启用CONFIG_ETH_USE_OPENETH 并初始化以太网驱动程序,如示例 /c…...

Python学习笔记(四)
# 数据容器分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)""" 演示数据容器之:list列表 语法:[元素ÿ…...

跨域:安全分步实施指南
什么是跨域问题? 跨域(Cross-Origin Resource Sharing,CORS)问题发生在浏览器的同源策略(Same-Origin Policy)限制下。当一个域上的网页试图访问另一个域上的资源时,浏览器会阻止这些操作以保护…...

【iOS】AutoreleasePool自动释放池的实现原理
目录 ARC与MRC项目中的main函数自动释放池autoreleasepool {}实现原理AutoreleasePoolPage总结 objc_autoreleasePoolPush的源码分析autoreleaseNewPageautoreleaseFullPageautoreleaseNoPage autoreleaseFast总结 autorelease方法源码分析objc_autoreleasePoolPop的源码分析po…...

stm32—GPIO
0. 引入 在单片机产品中,我们常常可以见到三种模块:LCD灯、KEY按键、BEEP蜂鸣器 LED灯: 一个比较常见的LED电路LED0 ---------- 通过控制LED0引脚(电线) 给它一个低电平(低电压),LED灯就会亮 给它一个高电平(高电压),LED灯就会灭 …...

CocosCreator使用 ProtoBuf WebSocket与服务器对接方法
在 Cocos Creator 中使用 .proto 文件和转换成 TypeScript(TS)两者各有其优缺点,具体选择取决于你的项目需求和团队的开发习惯。以下是两者的一些比较: 1、使用 .proto 文件的优点: 跨语言支持:Protocol B…...

【python基础】while循环语句练习
明显可以感觉到循环比判断要更加难以理解一些,这个就只能通过练习来提高理解和思维能力了。 学习视频:第一阶段-第四章-05-while循环案例-九九乘法表_哔哩哔哩_bilibili 练习一:计算1-10的和 i1#循环的起始值 sum0 while i&l…...

【SpringBoot系列】WebMvcConfigurer配置
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

学懂C++ (十九):高级教程——深入详解C++信号处理
目录 C中的信号处理 1. 信号处理的本质 2. 主要信号类型 3. 核心关键点 4. 经典实例 代码分析 5. 进阶:信号屏蔽与多线程 例子:使用sigaction() 6. Windows中的信号处理 7. 比较与总结 示例:Windows控制台事件处理 总结 C中的信号…...

SOMEIP_ETS_032:echoUINT8ArrayMinSize
测试目的: 确保DUT能够正确处理最小尺寸的UINT8数组参数,并且在发送和接收过程中保持参数值和顺序不变。 描述 本测试用例旨在验证DUT在处理包含最小尺寸UINT8数组参数的SOME/IP消息时,是否能够准确地发送和接收这些参数,确保返…...

JS+CSS案例:可适应上下布局和左右布局的菜单(含二级菜单)
今天,我给大家分享一个原创的CSS菜单,整个菜单全由CSS写成,仅在切换布局时使用JS。合不合意,先看看效果图。 本例图片 接下来,我来详细给大家分享它的制作方法。 文件夹结构 因为涉及到了样式表切换,所以,你需要借鉴一下我的文件夹结构。 CSS文件夹: reset.css 用于…...

【数据结构】线性表,顺序表
一. 线性表 1. 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 2. 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 3. 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理…...

Spring之最基础的创建与Bean的存储与获取(还有Maven加载jar包报错的解决方法)
目录 创建Spring项目 如何解决Maven加载jar包报错 存储Bean和取Bean 在Java中对象也称为Bean。所以后面我提到Bean,大家要知道我说的是什么。 创建Spring项目 我的idea是2022版本的,如果大家和我一样可以参考我的。 1.创建一个Maven项目。图片上忘了…...

RabbitMQ应用问题 - 消息顺序性保证、消息积压问题
文章目录 MQ 消息顺序性保证概述原因分析解决方案基于 spring-cloud-stream 实现分区消费 消息挤压问题概述原因分析解决方案 MQ 消息顺序性保证 概述 a)消息顺序性:消费者消费的消息的顺序 和 生产者发送消息的顺序是一致的. 例如 生产者 发送消息顺序…...

linux tcp通讯demo
linux tcp通讯demo代码。通过用chatgpt生成的代码。做一个代码记录。 一、基本的通讯demo server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h>…...

在 MongoDB 中,如何配置副本集以实现读写分离?
在 MongoDB 中,配置副本集以实现读写分离主要涉及以下几个步骤: 初始化副本集: 创建副本集时,需要在所有参与节点上运行 rs.initiate() 命令。这将初始化一个新的副本集。 添加成员到副本集: 使用 rs.add() 命令将所有…...

虚拟dom-Diff算法
虚拟dom-Diff算法 vue2 diff算法在vue2中就是patch,通过新旧虚拟dom对比,找到最小变化然后进行dom操作 在页面首次渲染的时候会调用一次patch并创建新的vnode,不会进行深层次的比较,然后再组件中数据发生变化的时候,…...

01创建型设计模式——单例模式
一、单例模式简介 单例模式(Singleton Pattern)是一种创建型设计模式(GoF书中解释创建型设计模式:一种用来处理对象的创建过程的模式),单例模式是其中的一种,它确保一个类只有一个实例ÿ…...

图像分割(一)
一、概述 语义分割:是把每个像素都打上标签(这个像素点是人、树、背景等) 实例分割:不光要区别类别,还要区分类别中的每一个个体 损失函数:逐像素的交叉熵;样本均衡问题 MIOU指标:…...

C++ 新经典:设计模式 目录(先留框架,慢慢来~)
C 新经典:设计模式 C 新经典:设计模式 C 新经典:设计模式第1章 设计模式与软件开发思想、编程环境介绍第2章 模板方法模式第3章 工厂模式、原型模式、建造者模式第4章 策略模式第5章 观察者模式第6章 装饰模式第7章 单件模式第8章 外观模式第…...

go之命令行工具urfave-cli
一、urfave/cli urfave/cli 是一个声明性的、简单、快速且有趣的包,用于用 Go 构建命令行工具。 二、快速使用 2.1 引入依赖 go get github.com/urfave/cli/v2 2.2 demo package mainimport ("fmt""log""os""github.com/ur…...