计算机网络:网络层 —— 路由选择与静态路由配置
文章目录
- 路由选择
- 路由选择的基本概念
- 路由选择算法
- 路由选择策略
- 路由器的工作原理
- 路由表
- 静态路由配置
- 默认路由
- 特定主机路由
路由选择
路由选择(Routing)是网络层的一个关键功能,负责在源和目的地之间选择最佳路径,以确保数据包高效地到达目的地。路由选择涉及多个方面,包括路由表的维护、路由协议的使用、路径选择算法等。
- 路由表需要对网络拓扑变化的计算最优化
- 转发表的结构应当使查找过程最优化
路由选择是网络层确保数据包高效到达目的地的核心功能。通过静态和动态路由,结合不同的路由选择算法和协议,网络能够动态适应拓扑变化,优化路径选择,提高传输效率和可靠性。
在实现路由选择的过程中,合理配置和管理路由表,以及选择合适的路由协议和策略,是确保网络稳定和高效运行的关键。
路由选择的基本概念
-
路由表:每个路由器都有一个路由表,存储关于网络的路径信息,包括目的地网络、下一跳地址、路径开销等。
-
下一跳:数据包需要转发的下一个设备地址,即下一台路由器的IP地址。
-
路径开销:衡量一条路径的成本或距离,通常包括跳数、带宽、延迟等因素。
路由选择算法
路由选择算法决定了路由器如何选择最佳路径,主要分为两类:静态路由和动态路由。
-
静态路由:采用人工配置的方式给路由器添加网络路由默认路由和特定主机路由等路由条目。一般只在小规模网络中采用。
- 由网络管理员手动配置,适用于小型和固定网络,但不适应动态变化的网络环境。
- 优点:简单、开销低、无额外通信开销。
- 缺点:无法自动适应网络状态(流量、拓扑等)变化,管理复杂。
-
动态路由:路由器通过路由选择协议自动获取路由信息。适用于大规模网络。
- 路由器自动计算和更新路由信息,通过路由协议实现。
- 优点:适应网络变化,自动更新路由表。
- 缺点:复杂度高,有通信开销。
路由选择策略
-
最短路径优先:选择跳数最少的路径。
-
最低开销优先:选择开销最低的路径,开销可以是带宽、延迟等综合因素。
-
负载均衡:将流量分配到多个路径,避免某一条路径过载。
-
策略路由:基于策略的路由选择,如服务质量(QoS)要求、安全需求等。
路由器的工作原理
路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组
路由器的交换结构的速率对于路由器的性能是至关重要的。因此,人们对交换结构进行了大量研究,以提高路由器的转发速率。
通过实现交换结构的三种基本方式是:通过存储器、通过总线以及通过互连网络。这三种交换结构可实现的路由器转发速率依次提高。
路由表
路由表存储了网络中的路径信息,包括目的地网络、下一跳地址、出接口等。路由表的条目通常包含以下内容:
- 目的地地址:目标网络或主机的IP地址。
- 子网掩码:用于确定目的地地址的网络部分。
- 下一跳地址:数据包转发的下一台路由器的IP地址。
- 出接口:用于转发数据包的网络接口。
- 度量值:用于选择最佳路径的开销信息,例如跳数、带宽等。
路由表一般仅包含从目的网络到下一跳的映射。路由表需要对网络拓扑变化的计算最优化
静态路由配置
静态路由配置是指用户或网络运维人员使用路由器的相关命令给路由器人工配置路由表。人工配置方式简单、开销小、但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中采用。当需要确保特定的数据流量通过预定义的路径传输时,或者在网络中只有少数几个路由器时,使用静态路由是一个简单且有效的方法。
进行静态路由配置需要认真考虑和谨慎操作,否则可能出现以下问题:
- 路由条目配置错误,甚至导致出现路由环路
- 聚合路由条目时可能引入不存在的网络。
默认路由
默认路由(Default Route)是静态路由的一种特殊形式,它是指当路由器查找不到与目标地址相匹配的具体路由条目时,会将数据包转发到这个默认路由指定的下一跳地址。
默认路由通常用于简化路由表,减少路由表的大小,提高查找效率。在很多情况下,特别是在接入互联网的边缘路由器上,设置一条默认路由是非常有用的,因为它可以将所有未知目的地的流量导向上游的 ISP
(Internet Service Provider)路由器。
-
直连路由: R1 的路由表中包含两条直连路由:
- 目的地是
192.168.1.0/24
,下一跳是接口0,类型是“直连”。 - 目的地是
10.0.0.0/30
,下一跳是接口1,类型也是“直连”。
- 目的地是
-
默认路由: R1 还有一条默认路由,目的地是
0.0.0.0/0
,下一跳是10.0.0.2
,类型是“静态”。这意味着任何没有明确路由条目的数据包都将被转发到10.0.0.2
,也就是 R2 的接口 0。 -
数据包转发过程: 当 R1 接收到一个目的地不在其直连网络内的数据包时,它会查询自己的路由表。由于没有找到对应的具体路由条目,它就会使用默认路由,将数据包转发到
10.0.0.2
。然后,R2 负责将这些数据包进一步转发到因特网中的相应网络。
默认路由条目中的目的网络为 0.0.0.0/0
,其中 0.0.0.0
表示任意网络,而网络前缀 /0
(相应的地址掩码为0.0.0.0)是最短的网络前缀。
路由器在查找转发表转发IP数据报时,遵循“最长前缀匹配”的原则,因此默认路由条目的匹配优先级最低。
特定主机路由
出于某种安全问题的考虑,同时为了使网络运维人员更方便地控制网络和测试网络,特别是在对网络的连接或路由表进行排错时,指明到某一台主机的特定主机路由是十分有用的。
特定主机路由条目中的目的网络 192.168.2.1/32
,其中 192.168.2.1
是特定主机的IP地址,而网络前缀 /32
(相应地址掩码为255.255.255.255)是最长的网络前缀。
路由器在查找转发表转发IP数据报时,遵循“最长前缀匹配”的原则,因此特定主机路由条目的匹配优先级最高。
相关文章:
计算机网络:网络层 —— 路由选择与静态路由配置
文章目录 路由选择路由选择的基本概念路由选择算法路由选择策略 路由器的工作原理路由表静态路由配置默认路由特定主机路由 路由选择 路由选择(Routing)是网络层的一个关键功能,负责在源和目的地之间选择最佳路径,以确保数据包高…...
[LeetCode-55]基于贪心算法的跳跃游戏的求解(C语言版)
/* 题目出处:LeetCode 题目序号:55. 跳跃游戏 题目叙述:给你一个非负整数数组 nums ,你最初位于数组的第一个下标位置 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可…...
C# 将批量图片转为PDF文件
目录 功能实现 范例运行环境 关键代码 组件库引入 将批量图片转换为PDF 总结 功能实现 功能实现主要使用 iTextSharp 库实现,将指定目录下的有序的一组图片,组合生成指定文件名的PDF文件。 范例运行环境 操作系统: Windows Server…...
大模型面试题63题(1-11)
扫一扫,实时跟踪面试题(关注“算法狗”)就可以啦 1. 什么是大型语言模型(LLMs)以及它们的工作原理是什么? 大型语言模型(LLMs)是设计用来理解、处理和生成类似人类文本的高级人工智…...
【Flask】二、Flask 路由机制
目录 什么是路由? Flask中的路由 基本路由 动态路由 路由中的HTTP方法 路由函数返回 在Web开发中,路由是将URL映射到相应的处理函数的过程。Flask是一个轻量级的Web应用框架,提供了简单而强大的路由机制,使得开发者能够轻松…...
Java项目实战II基于Spring Boot的交通管理在线服务系统设计与实现(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化…...
【PythonWeb开发】Flask-RESTful视图类基础知识
flask_restful 是一个扩展库,它为 Flask 提供了快速构建 RESTful API 的功能。使用 flask_restful 可以简化 RESTful API 的开发过程,减少样板代码,并且提供了一些高级特性,如 HTTP 方法的映射、资源路由的定义等。 在flask_restf…...
Kubernetes——part10-2 kubernetes 日志收集方案 EFK
一、EFK 1.1 EFK介绍 EFK为elasticsearch、fluentd、kibana的简称,本案例主要对kubernetes集群日志收集。 1.2 Fluentd介绍 fluentd是一款开源的日志收集工具,其于2016年11月8日被云原生计算基金会录取,并于2019年毕业。 Fluentd优势&…...
mockito+junit完成单元测试
一:单元测试的特点 配合断言使用(可以杜绝System.out)可以重复执行不依赖环境不会对数据产生影响spring的上下文环境不是必须的一般都需要配合mock类框架来实现 二:常用的mock类框架 mockito 官网:Mockito framew…...
基于web的便捷饭店点餐小程序的设计与实现(lw+演示+源码+运行)
摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全…...
CUDA环境安装终极指南——Linux(其它系统也一样)
文章目录 前言检查驱动配置nvcc安装cudnn完活 前言 不用看其它文章了,这篇文章保你不踩任何坑,安装方法简单快速 检查驱动 检查驱动是否安装,输入以下命令 nvidia-smi如果驱动已经安装,则可跳过此步,否则ÿ…...
安卓开发之登录页面(跳转版)
目录 前言:基础夯实:效果展示:核心代码:网盘源码: 前言: 熟悉安卓开发的基础知识,了解,弹窗,两个页面进行跳转,页面的布局,按钮,文本…...
solidworks学习6吊环-20241030
solidworks学习6吊环 图 1 使用到的命名:拉伸曲面,旋转曲面,镜像实体,剪裁曲面, 前视基准面绘制 图 2 绘制旋转轴 图 3 旋转曲面 图 4 上视基准面绘制,标准圆边尺寸的时候需要按住shift键标注&#x…...
数据结构和算法-动态规划(3)-经典问题
动态规划常见问题 打家劫舍 题目 [力扣198] 198. 打家劫舍 - 力扣(LeetCode) 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&…...
Java算法-一维前缀和与差分
一、一维前缀和 ① 什么是一维前缀和? 📚 其实通过名字就能知道" 一维前缀和 "的意思: 通过一个一维数组"arr1"而创建的另一个一维数组"arr2","arr2"的每一个元素都是"arr1"…...
Elasticsearch 安装教程:驾驭数据海洋的星际导航仪
目录 一、准备工作1. ES的下载 二、安装步骤三、注意事项四、启动报错1. org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root2. max virtual memory areas vm.max_map_count [65530] is too low, increase to at l…...
【解决方案】微信小程序如何使用 ProtoBuf 进行 WebSocket 通信
前言 故事背景 简单说下背景,项目中需要用 ProtoBuf 协议转换请求参数,并通过 WebSocket 进行双向通信。重点!一个是 web端(Vue3 TS),一个是微信小程序端(原生 JS)。 剧情发展 …...
独立游戏开发者面临的挑战与困境
在当今竞争激烈的游戏市场中,独立游戏开发者面临着诸多挑战与困境。从游戏版号申请到游戏被抄袭,再到产品同质化以及流量获取难题,乃至外包内卷现象,每一个环节都考验着开发者的智慧与毅力。以下是对这些挑战与闲境的详细分析。 …...
KVM 虚拟机Anolis OS 8.9 下利用宝塔面板中的 Docker 配置 Nextcloud + onlyoffice
第一部分:安装配置 nextcloud 准备 (1)启动一个 Anolis OS 8.9 虚拟机,见下图。该虚拟机为 anlisos8…0.2 虚拟机的 ssh、hostname 、IP地址都已配置好。 (2)宝塔面板也已安装好docker 一、环境 do…...
串口扫盲TTL,TX/TR/GND
1. 串口扫盲TTL,TX/TR/GND 1. 串口扫盲TTL,TX/TR/GND 1.1. TTL1.2. USB转TTL1.3. 串口通信1.4. 引脚缩写1.5. 参考资料 1.1. TTL TX(TXD) 来源于 Transmit 一词,意思为发送,发射RX(RXD) 来源于 Receive 一词 意思为接收,收到GND 地线&…...
Python酷库之旅-第三方库Pandas(181)
目录 一、用法精讲 836、pandas.api.types.is_file_like函数 836-1、语法 836-2、参数 836-3、功能 836-4、返回值 836-5、说明 836-6、用法 836-6-1、数据准备 836-6-2、代码示例 836-6-3、结果输出 837、pandas.api.types.is_list_like函数 837-1、语法 837-2、…...
Python数据分析NumPy和pandas(十七、pandas 二进制格式文件处理)
以二进制格式存储(或序列化)数据的一种简单方法是使用 Python 的内置 pickle 模块。同时,pandas 构造的对象都有一个 to_pickle 方法,该方法以 pickle 格式将数据写入磁盘。 我们先把之前示例用到的ex1.csv文件加载到pandas对象中…...
matlab计算相关物理参数
function Rx1Jetfire1_1(di,Ct,Tf,Tj,alpha,Ma,Mf,RH,P0,P,k,Cd,elta,deltaHc,tau,directory) % 一共15个独立变量,为了方便输入修改,所有变量存入Jetfire1_1excel表, % dj为孔口直径,m;Ct为燃料空气混合摩尔系数,可…...
nmcli、ip、ifcfg配置网络区分方法
文章目录 一、检查NetworkManager状态使用nmcli命令:检查NetworkManager服务状态: 二、检查ip命令的使用三、检查ifcfg文件查看/etc/sysconfig/network-scripts/目录:查看/etc/network/interfaces文件(针对Debian系)&a…...
第四届智能电力与系统国际学术会议(ICIPS 2024)
文章目录 一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询 一、会议详情 二、重要信息 大会官网:https://ais.cn/u/vEbMBz提交检索:EI Compendex、IEEE Xplore、Scopus 三、大会介绍 四、出席嘉宾 五、征稿主题 如想"投稿…...
区块链样题第4套解析 后端应用开发部分
任务3-2:区块链应用后端开发 使用JAVA-SDK与区块链进行交互,通过solc2Java工具将Solidity智能合约转译为可供Java调用的文件,实现区块链编程。 前言:题目只是单纯考了对于fisco-java-sdk的简单使用 教程参考: 1.这边建议还是学习完JavaWeb课程。 黑马程序员JavaWeb...
C语言实现408考研真题2016年43题
#include <iostream> // 定义分区函数,返回两个子数组之和的差值 int setPartition(int a[], int n) { int pivotkey, low 0, low0 0, high n - 1, high0 n - 1, flag 1, k n / 2, i; int s1 0, s2 0; // 当low等于k-1,…...
2024年,Rust开发语言,现在怎么样了?
Rust开发语言有着一些其他语言明显的优势,但也充满着争议,难上手、学习陡峭等。 Rust 是由 Mozilla 主导开发的通用、编译型编程语言,2010年首次公开。 在 Stack Overflow 的年度开发者调查报告中,Rust 连续多年被评为“最受喜爱…...
三种网络配置方法nmcli、ip、ifcfg文件
文章目录 总结nmcli配置网络定义与功能:特点:示例: ip配置网络定义与功能:特点:示例: ifcfg配置网络定义与功能:特点:示例: 总结 nmcli:适合需要动态管理网络…...
AES_ECB算法C++与Java相互加解密Demo
一、AES算法 AES是一种对称加密算法,算法秘钥长度可为128位(16字节)、192位(24字节)、256位(32字节)。加密模式分为ECB、CBC、CTR等,其中ECB模式最简单够用。现给出ECB模式下C和Java的实现,并且可以相互加解密验证。 二、AES_ECB实现DEMO …...
京东商城网站的搜索引擎营销做的案例分析/淘宝客怎么做推广
2019独角兽企业重金招聘Python工程师标准>>> 之前写过一篇文章, 关于自定义Behaviors ,通过它,我们在Blend中可以快速的实现各种行为并方便使用。当然,结合blend的开发中,我们还知道xaml中还有另外几个重要…...
燕窝网站怎么做/云南百度推广开户
整理 | 李雪敬出品 | 程序人生(ID:coder_life)据微博用户程序员的那些事 透露,一名来自洛阳的程序员在离职后的第二个月收到了原公司的汇款2400元,该笔汇款备注了竞业协议补偿款,在收到该笔汇款后不久&…...
网站做不做百度云加速/数据分析师培训机构推荐
在CentOS 8上预先安装了Cockpit,它使系统管理员可以从基于Web的控制台管理任务。 你可以使用Cockpit来更新操作系统和软件。 如果未安装Cockpit,则可以使用以下命令安装: 1 2 3 # systemctl start cockpit.socket # systemctl enable --now…...
佛山网站建设网站制作公司哪家好/关键词有哪些
提回来4个月,关于导航的问题曾经纠结过很久:弄个一体机吧,贵,安装还麻烦,新地图也麻烦(其实主要是贵。。。),家里装宽带电信送华为C8812跟华为C8650,一直都是拿这两个手机当导航用&am…...
石家庄网站定制/做百度推广需要什么条件
这次的活动是玩转云上博客搭建,活动不难,总共分4步,下面就来说说如何领取这块抹布~~~~ 1、活动地址 活动地址:https://developer.aliyun.com/adc/series/web/ 2、活动过程 1)第一项,函数计算应用&#…...
怎么网站建设公司/云客网平台
1 package day07;2 3 public class Students {4 5 private String name;6 7 /*this关键字:8 * 1、this调用本类中的属性,也就是类中的成员变量9 * 2、this调用本类中的其他方法 10 * 3、this调用本类中的其他构造方法,…...