当前位置: 首页 > news >正文

计算机网络:网络层 —— 路由选择与静态路由配置

文章目录

    • 路由选择
      • 路由选择的基本概念
      • 路由选择算法
      • 路由选择策略
    • 路由器的工作原理
    • 路由表
    • 静态路由配置
      • 默认路由
      • 特定主机路由

路由选择

路由选择(Routing)是网络层的一个关键功能,负责在源和目的地之间选择最佳路径,以确保数据包高效地到达目的地。路由选择涉及多个方面,包括路由表的维护路由协议的使用路径选择算法等。

![[路由选择.png]]

  • 路由表需要对网络拓扑变化的计算最优化
  • 转发表的结构应当使查找过程最优化

路由选择是网络层确保数据包高效到达目的地的核心功能。通过静态动态路由,结合不同的路由选择算法和协议,网络能够动态适应拓扑变化,优化路径选择,提高传输效率和可靠性。

在实现路由选择的过程中,合理配置和管理路由表,以及选择合适的路由协议和策略,是确保网络稳定和高效运行的关键。

路由选择的基本概念

  1. 路由表:每个路由器都有一个路由表,存储关于网络的路径信息,包括目的地网络、下一跳地址、路径开销等。

  2. 下一跳:数据包需要转发的下一个设备地址,即下一台路由器的IP地址。

  3. 路径开销:衡量一条路径的成本或距离,通常包括跳数、带宽、延迟等因素。

路由选择算法

路由选择算法决定了路由器如何选择最佳路径,主要分为两类:静态路由和动态路由。

  1. 静态路由:采用人工配置的方式给路由器添加网络路由默认路由和特定主机路由等路由条目。一般只在小规模网络中采用。

    • 网络管理员手动配置,适用于小型和固定网络,但不适应动态变化的网络环境。
    • 优点:简单、开销低、无额外通信开销。
    • 缺点:无法自动适应网络状态(流量、拓扑等)变化,管理复杂。
  2. 动态路由:路由器通过路由选择协议自动获取路由信息。适用于大规模网络

    • 路由器自动计算和更新路由信息,通过路由协议实现。
    • 优点:适应网络变化,自动更新路由表。
    • 缺点:复杂度高,有通信开销。

路由选择策略

  1. 最短路径优先:选择跳数最少的路径。

  2. 最低开销优先:选择开销最低的路径,开销可以是带宽、延迟等综合因素。

  3. 负载均衡:将流量分配到多个路径,避免某一条路径过载。

  4. 策略路由:基于策略的路由选择,如服务质量(QoS)要求、安全需求等。

路由器的工作原理

路由器是一种具有多个输入端口和输出端口的专用计算机,其任务是转发分组

![[路由器.png]]

路由器的交换结构的速率对于路由器的性能是至关重要的。因此,人们对交换结构进行了大量研究,以提高路由器的转发速率。

通过实现交换结构的三种基本方式是:通过存储器通过总线以及通过互连网络。这三种交换结构可实现的路由器转发速率依次提高。

路由表

路由表存储了网络中的路径信息,包括目的地网络、下一跳地址、出接口等。路由表的条目通常包含以下内容:

  • 目的地地址:目标网络或主机的IP地址。
  • 子网掩码:用于确定目的地地址的网络部分。
  • 下一跳地址:数据包转发的下一台路由器的IP地址。
  • 出接口:用于转发数据包的网络接口。
  • 度量值:用于选择最佳路径的开销信息,例如跳数、带宽等。

路由表一般仅包含从目的网络到下一跳的映射。路由表需要对网络拓扑变化的计算最优化

静态路由配置

静态路由配置是指用户或网络运维人员使用路由器的相关命令给路由器人工配置路由表。人工配置方式简单、开销小、但不能及时适应网络状态(流量、拓扑等)的变化,一般只在小规模网络中采用。当需要确保特定的数据流量通过预定义的路径传输时,或者在网络中只有少数几个路由器时,使用静态路由是一个简单且有效的方法。

![[静态路由配置.png]]

进行静态路由配置需要认真考虑和谨慎操作,否则可能出现以下问题:

  • 路由条目配置错误,甚至导致出现路由环路
  • 聚合路由条目时可能引入不存在的网络。

默认路由

默认路由(Default Route)是静态路由的一种特殊形式,它是指当路由器查找不到与目标地址相匹配的具体路由条目时,会将数据包转发到这个默认路由指定的下一跳地址

默认路由通常用于简化路由表,减少路由表的大小,提高查找效率。在很多情况下,特别是在接入互联网的边缘路由器上,设置一条默认路由是非常有用的,因为它可以将所有未知目的地的流量导向上游的 ISP(Internet Service Provider)路由器。

![[默认路由.png]]

  1. 直连路由: R1 的路由表中包含两条直连路由:

    • 目的地是 192.168.1.0/24,下一跳是接口0,类型是“直连”。
    • 目的地是 10.0.0.0/30,下一跳是接口1,类型也是“直连”。
  2. 默认路由: R1 还有一条默认路由,目的地是 0.0.0.0/0,下一跳是 10.0.0.2,类型是“静态”。这意味着任何没有明确路由条目的数据包都将被转发到 10.0.0.2,也就是 R2 的接口 0。

  3. 数据包转发过程: 当 R1 接收到一个目的地不在其直连网络内的数据包时,它会查询自己的路由表。由于没有找到对应的具体路由条目,它就会使用默认路由,将数据包转发到 10.0.0.2。然后,R2 负责将这些数据包进一步转发到因特网中的相应网络。

默认路由条目中的目的网络为 0.0.0.0/0,其中 0.0.0.0 表示任意网络,而网络前缀 /0相应的地址掩码为0.0.0.0)是最短的网络前缀。

路由器在查找转发表转发IP数据报时,遵循“最长前缀匹配”的原则,因此默认路由条目的匹配优先级最低

特定主机路由

出于某种安全问题的考虑,同时为了使网络运维人员更方便地控制网络和测试网络,特别是在对网络的连接或路由表进行排错时,指明到某一台主机的特定主机路由是十分有用的。

![[特定主机路由.png]]

特定主机路由条目中的目的网络 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如果驱动已经安装,则可跳过此步,否则&#xff…...

安卓开发之登录页面(跳转版)

目录 前言:基础夯实:效果展示:核心代码:网盘源码: 前言: 熟悉安卓开发的基础知识,了解,弹窗,两个页面进行跳转,页面的布局,按钮,文本…...

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 地线&…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

【kafka】Golang实现分布式Masscan任务调度系统

要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

基于服务器使用 apt 安装、配置 Nginx

🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

ip子接口配置及删除

配置永久生效的子接口&#xff0c;2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...