【网络层】路由基础

news2024/9/22 3:59:47

文章目录

    • 技术背景
    • IP 路由工作原理
    • IP路由表


技术背景

路由是能够让整个Internet持续运转的关键。回看之前的网络历史,最开始用一根网线将两台设备连接起来,面对面就能通信。到后面出现了交换机,能够让区域内的所有设备互相通信,形成局域网。现在若要想将这个局域网内的消息传送到另一个地方的局域网,这就需要路由器将不同网络连接起来,实现网络的数据转发。

这就好比你在一个大城市里,想要从你所在的大城市到另一个大城市,你可能会用到地图或者导航系统。这个导航系统会帮你找到一条从起点到终点的路线。在计算机网络中,路由也是类似的,它是一种机制,用于决定数据包从源头到目的地的最佳路径。

路由相关常用名词:

路由 routing从源地址到目的地址,不同网络间的转发过程
路由表 routing table路由信息的集合,这是路由的依据
路由器 router具有路由功能的设备
默认网关 default gateway通过是路由设备的接口IP地址

这里用生活场景来解释下这些名词在整个路由过程中起到的作用

假设在没有办法使用手机线上购票的情况下,你想要从上海到西藏 ,就需要去火车站买票。
<这就好比网络中两个不同的网络。网络中只要通过ip地址和掩码就能知道是不是在同一个网段里。上海和西藏在路由里就是源地址和目标地址,也就是表示这个数据包想要从源ip地址到达目标ip地址。而火车站就是路由器,火车站是具有买票的功能,路由器具有路由功能。>

这时要确定要去的火车站地址,是南站还是北站,然后过去,询问售票员是否有上海到西藏的票。
<火车站地址就像是网关 >

售票员就会在电脑上查询火车时刻表,这张时刻表上记录很多火车班次的信息。
< 时刻表在路由中就是路由表,时刻表信息都会时刻刷新,路由表也是一样的 。路由就像是时刻表上每条火车班次的信息,一条路由中也是包含相关路由信息。>

售票员根据你提供的信息找到最优的火车班次,就可以出发。若没有,你就回。
< 在路由表上找到最优的路由,就能将数据传出去。若没有找到,数据就会丢弃 >

在这个过程中,如果想要去异地,就需要先找到网关,只有找到网关才能出去。这里找网关也就相当于找路由设备。最重要也是最麻烦的地方就在于,在路由表中如何选择最优的路由。也就是在火车时刻表中,有很多上海到西藏班次的列车,你是要选择哪个列车呢?


IP 路由工作原理

在这里插入图片描述
如上拓扑图所示,三台路由器,每台路由器都维护对应的路由表。路由表中最重要的三个元素:目标网络Destination,下一条NextHop,出接口Interface。

主机地址为10.3.1.0 的设备想要访问到主机为10.4.1.0的设备就需要通过三个路由器进行指路。
当RA路由器收到 10.3.1.0设备的数据包,会先检查目的MAC地址是否与自己的硬件地址匹配。若匹配,会拿到ip 字段中的目标地址10.4.1.0,根据目标网络地址,在路由表查找路由。确实有条路由目的网络是10.4.1.0,吓一跳为10.1.2.2,出端口为E0。就会将数据包扔给该路由所指的出接口或下一跳。以此类推,到达最终的目标网络10.4.1.0

出接口指的是当前路由器的出口,拿上面的例子来类比的话,就是火车站的等车的进站口是A1还是A15。
下一跳指的是下一个设备的入口地址,同样用例子说明的话,就是你要去西藏,下一站是苏州D1口出。在路由和例子中不一样的点是在,生活中买完票之后可以凭票直接到达目的地,不需要中途再检票。而路由过程需要每一路由设备都需要检查路由表。

路由过程是双向的,也就是说10.3.1.0到10.4.1.0 路由是通的,相反10.4.1.0到10.3.1.0 路由也要是通的。这样整个网络通信路由过程才是正常的。

总结下路由的整个过程:
路由设备接收到数据包,检查二层目的MAC地址是否与自己硬件地址匹配。若不匹配就丢弃;若匹配,先通过二层帧CRC校验,确保数据没有在传输过程中出现异常。拆解二层数据拿到三层包头数据。根据三层的校验头来确认数据包的完整性,若正常则获取三层目的IP地址,查看IP地址是否为本机接口地址或者是广播地址之类的群发地址。若是则会进一步拆解包头获取数据,若不是就代表这个数据需要被转发,查找路由表,确认最优路线处理三层报文中 TTL -1,计算校验和,为了给下个设备进行校验。 根据地址表确认下一个设备的MAC地址,重新封装二层包头并计算二层校验和,转发给下一个设备。


IP路由表

在整个路由的过程中,最重要的还是路由表。IP路由表:存放最优的路由信息/条目。 使用eNSP 路由器命令行输入 display ip routing-table 查看路由表信息
在这里插入图片描述
这里面显示的每一条路由就类比于列车,而这些路由都会有相关的路由信息:

路由表字段备注
Destination目标地址用来标识存在的能够去往的目的地址或目的网络
Mask掩码用来选择最佳路由的重要依据(最长匹配原则)
NextHop下一跳指明该数据包所经过的下一个路由器的接口地址
Interface出接口指明该数据包将从哪个接口转发
Protocol 协议路由的来源
Preference优先级用来比较不同协议学习去往相同地址不同路径的优先程度(越小越优先)
cost开销用来比较相同协议学习去往相同地址不同路径的的代价(越小越优先)

上面用简单的例子介绍了Destination目标地址、NextHop下一跳、Interface出接口
在错综复杂的网络中,从源地址到目的地址的路径有很多,路由器需要进行路由选择,选出最优路径显示在路由表中。
就好比,在火车时刻表中有很多条上海到西藏的列车,你要选择哪一趟?你就会根据时间,价格,舒适度等因素进行购票。
路由设备也是一样,在众多的路由条目中根据 Protocol 协议、 Preference优先级、cost开销 选出最优路径显示在路由表中。

Protocol 协议 / Preference优先级
路由协议分为动态协议和静态协议
静态的配置简单,不占用资源;动态协议配置相对复杂,可以及时同步网络变化
在这里插入图片描述
如上图所示,不同协议学习去往相同地址。这时路由设备比较的规则是协议本身的优先级(越小越优先)。不同协议之间优先级如下图:

路由协议/类型DirectOSPFISISStaticRIPOSPF
ASE
BGP
管理距离/优先级0101560100150

对协议的理解可以是:在火车时刻表上有很多种类的交通工具,如动车、高铁、绿皮火车等

cost开销
在这里插入图片描述
在路由选择的过程中,会出现相同的协议都去往相同的目标地址。这时候就要根据cost 开销来决定哪一条是最优路径。 如上图所示,下面路径开销小则优先选择为最优路径。

当然也会存在,对于一个路由来源,当到同一个目标网络存在多条相同度量值的路由时,路由器会将这些路由条目都加入路由表,数据包会在这几个链路(路径)进行负载分担。这种路由是等价路由(ECMP,Equal cost multi-Path)
(负载均衡的选择:逐包,逐流 可以根据目标IP或源IP,目标MAC或源MAC选择。最终会经过“哈希”计算实现)

Mask掩码
最长掩码匹配原则:最终数据包实现最佳路由的算法
在这里插入图片描述
例子:目的地址位10.1.2.1的数据报文,路由表条目中目的地址包含 0.0.0.0/0
、 10.0.0.0/8 、10.1.0.0/16
路由器的转发原则如下:将所有的路由条目进行与计算,得出最长的相同掩码来转发
目标地址10.1.2.1,路由器转发过程:
首先与计算目标地址得出:0001 0000.0000 0001.0000 0010.0000 0001

0.0.0.0/0 掩码为0,表示任意目标地址都行
0000 0000.0000 0000.0000 0000.0000 0000
0001 0000.0000 0001.0000 0010.0000 0001
匹配出3位相同 ✔

10.0.0.0/8 掩码为8,表示只有目的地址前8位一致才行
0001 0000.0000 0000.0000 0000.0000 0000
0001 0000.0000 0001.0000 0010.0000 0001
匹配出8位相同 ✔

10.1.0.0/16 掩码为16,表示只有目的地址前16位一致才行
0001 0000.0000 000 0.0000 0000.0000 0000
0001 0000.0000 000 1.0000 0010.0000 0001
匹配出15位相同 ✔

根据最长匹配原则,选择10.1.0.0/16转发。

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

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

相关文章

WPF篇(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说&#xff0c;Border并不是一个布局控件&#xff0c;因为它并不是Panel的子类&#xff0c;而是Decorator装饰器的子类&#xff0c;而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…

少儿编程 2024年6月scratch四级 电子学会图形化编程等级考试四级真题和答案解析(选择题)

2024年6月scratch编程等级考试四级真题 选择题&#xff08;共10题&#xff0c;每题2分&#xff0c;共20分&#xff09; 1、运行下列程序&#xff0c;输入单词“PLAY”最后角色说 A、LY4AP B、AP4LY C、YA4PL D、PL4AY 答案&#xff1a;B 考点分析&#xff1a;考查积木综合…

英伟达元宇宙平台Omniverse的学习,技术调研

NVIDIA Omniverse™ 是一个基于 USD (Universal Scene Description) 的可扩展平台&#xff0c;可使个人和团队更快地构建自定义 3D 工作流并模拟大型虚拟世界。 Omniverse&#xff1a;三维设计协同、模拟的开发平台&#xff0c;实现3D实时渲染&#xff0c;RTX光线追踪技术 协…

顺序表各种接口的实现(C)

线性表 线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。在物理结构上并不一定是连续的&#xff0c;线性表在物…

Qt 小功能:加载等待动画——转圈圈

加载等待动画实现——转圈圈 效果图&#xff1a;&#xff08;看封面最好&#xff09; 关键要点 流畅的动画&#xff1a; 使用 QTimer 每 50 毫秒更新一次动画&#xff0c;确保动画流畅。 视觉效果&#xff1a; 使用 QPainter 的平滑像素转换和抗锯齿选项&#xff0c;提高动画…

DHU OJ 循环结构 回文数字

思路及代码&#xff1a; 由于只考虑5位和6位回文数&#xff0c;3个 for 循环次数为9*10*10还可以&#xff0c;就直接遍历了 //input n int 10< <100 #include<iostream> using namespace std; int main(){int n;cin >> n;int ans 0; //solution //判断是…

HTML 元素提供的附加信息--属性 ——WEB开发系列03

HTML 属性是指用于描述 HTML 元素的额外信息&#xff0c;它们提供了元素的特定配置或行为&#xff0c;属性通常包含在 HTML 元素的开始标签中。 元素也可以拥有属性&#xff0c;属性看起来像这样&#xff1a; 属性是元素的附加信息&#xff0c;它们不会显示在实际内容中。在前述…

适合初学者的2024年数据恢复软件指南

现在大家应该经常会将数据存储在一些存储设备里。但这些设备可能会因为各种原因导致数据意外的丢失&#xff0c;这时候如果我们掌握了全免费的数据恢复工具的使用方式&#xff0c;就可以尽可能的避免数据丢失的情况。 1.福晰数据恢复 连接直达&#xff1a;https://www.pdf365…

跑腿代购app系统源码开发及功能分析

随着互联网技术的飞速发展和人们生活节奏的加快&#xff0c;跑腿代购服务作为一种便捷的生活方式&#xff0c;正逐渐渗透到我们日常生活的方方面面。从日常购物、餐饮外卖到文件传递、药品代购&#xff0c;跑腿服务以其高效、灵活的特点赢得了广大用户的青睐。而支撑这一服务高…

多进程架构关键技术之FileMapping技术应用

1. 前言 在多进程架构设计中&#xff0c;使用FileMapping技术是一种关键的技术选择。它能够显著提升多进程间数据共享和通信的效率&#xff0c;同时简化了复杂的进程间数据交互和同步管理。以下是FileMapping技术在多进程架构设计中的应用及其关键优势&#xff1a; 2. 共享数…

Linux项目自动构建工具 make/makefile

目录 0.前言 1.make/makefile是什么 2.makefile的语法 2.1基本语法 2.2依赖关系 2.3. 示例&#xff1a;一个简单的C程序 3.使用指令自动构建与清除 3.1自动构建 3.2自动清除 3.3自动化工作流 3.4扩展&#xff1a;更多伪目标 4.make的工作原理 5.使用make/makefile的优势 6.小结…

高质量WordPress下载站模板5play主题源码

5play下载站是由国外站长开发的一款WordPress主题&#xff0c;主题简约大方&#xff0c;为v1.8版本&#xff0c; 该主题模板中包含了上千个应用&#xff0c;登录后台以后只需要简单的三个步骤就可以轻松发布apk文章&#xff0c; 我们只需要在WordPress后台中导入该主题就可以…

Spring配置

1.Spring的两大核心思想IOC和AOP思想 1.1类注解 1.Controller, Service, Configuration, Component, Repository 1.2方法注解 bean&#xff08;这个方法搭配上面的五大注解进行使用&#xff09; 2.Bean的名称 2.1.类注解名称 &#xff08;1&#xff09;默认首字母小写驼…

数组结构:链式结构二叉树

1.实现链式结构二叉树 用链表来表示一棵二叉树&#xff0c;即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成&#xff0c;数据域和左右指针域&#xff0c;左右指针分别用来给结点的左孩子和右孩子所在的链结点的存储地址&#xff0c;其结构如下&#xff1…

Micrometer Tracing和Zipkin实现链路追踪

一、为什么使用链路追踪 在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xff0c;链路中的任何一环出现高延时或错误都会引起整个…

【经验分享】ShardingSphere+Springboot-03 : COMPLEX_INLINE 复杂行表达式分片算法

文章目录 3.3 复杂分片算法3.3.1 COMPLEX_INLINE 复杂行表达式分片算法 3.3 复杂分片算法 3.3.1 COMPLEX_INLINE 复杂行表达式分片算法 复合分片比较灵活&#xff0c;适合于分片的字段比较多&#xff0c;分片比较复杂的场景&#xff0c;使用这种分片的话必须对自己的业务比较…

深度学习——神经网络(neural network)详解(二). 带手算步骤,步骤清晰0基础可看

深度学习——神经网络&#xff08;neural network&#xff09;详解&#xff08;二&#xff09;. 手算步骤&#xff0c;步骤清晰0基础可看 前文如下&#xff1a;深度学习——神经网络&#xff08;neural network&#xff09;详解&#xff08;一&#xff09;. 带手算步骤&#x…

Java面试篇(JVM相关专题)

文章目录 0. 前言1. 为什么要学 JVM2. 什么是 JVM3. JVM 的好处3.1 一次编写&#xff0c;到处运行3.2 自动内存管理&#xff08;基于垃圾回收机制&#xff09; 4. 要学习哪些 JVM 的哪些内容5. JVM 的组成5.1 程序计数器5.2 堆5.3 什么是虚拟机栈常见问题一&#xff1a;垃圾回收…

代码+视频,R语言VRPM绘制多种模型的彩色列线图

列线图&#xff0c;又称诺莫图&#xff08;Nomogram&#xff09;&#xff0c;它是建立在回归分析的基础上&#xff0c;使用多个临床指标或者生物属性&#xff0c;然后采用带有分数高低的线段&#xff0c;从而达到设置的目的&#xff1a;基于多个变量的值预测一定的临床结局或者…

机器学习入门篇之监督学习(回归篇)——多元线性回归的原理介绍

在机器学习入门之监督学习&#xff08;分类篇&#xff09;-CSDN博客&#xff0c;以及初步接触了机器学习&#xff0c;在这片文章中我们继续沿着思维导图学习监督学习的剩下部分&#xff0c;回归。 在监督学习中&#xff0c;回归是一种预测型建模技术&#xff0c;它涉及预测一个…