路由器学习总结

2023-10-27

路由器在网络中的作用至关重要,就好像我们坐公交车到某个地方,公交车肯定不是一站直达的,中间要经过许多个公交站点,网络中数据的传输也是一样,源地址与目标地址之间并不是直接到达的,中间也要经过一系列的路由器转发,所以路由器的作用,就是用来转发数据包,使其到达正确的位置。
在这里插入图片描述
比如我跟踪一个数据包的传输路径,tracert+IP/域名的命令可以跟踪数据包转发的路径,发现一个数据包的转发要经过很多个站点,图片中第四列显示的就是经过的一系列站点的IP,这些站点实际上就是一个个路由器。

工作原理

在说工作原理 之前,先简单说一下路由表。
路由器转发数据包是根据路由器内部的路由表进行转发,当数据包到达路由器时,查询路由表,获取下一站的地址,然后进行转发,与之对应的每个公交站点都有一个站牌,告诉你下一站是哪里。
以华为路由器为例,说一下路由表的结构,其他型号的路由器大致也差不多。
华为路由表主要包含以下几个字段

  • destination/mask:用于描述目标网段,当前往目标网段有多个路径时,选择掩码最长的一条路径转发。
  • Protocol:表示路由运行的协议,路由表根据路由协议生成,包含三类路由
    直连路由:有链路层协议发现,开销小,表示与该路由器直连的路由,只能发现本接口所属网段的路由
    静态路由:由人工手动配置,IP router 129.1.0.0 16 10.0.0.2, 129.1.0.0表示目标网段,16表示掩码长度,10.0.0.2表示去往目标网段的下一个路由IP地址
    动态路由:根据各种路由协议算法发现,无需人工维护,但是开销较大,这也是生成路由表的主要方式
  • Preference:表示优先级,数值越小,优先级越高
  • Metric(Cost):开销,到达目标网络的代价,值越小,越优先
  • Interface:本端接口,表示数据包从本端那个接口转发出去
  • Nexthop:下一跳地址,互联网对端路由器的端口

当数据包到达路由器时,会进行下面几个操作

  • 读取目标地址的网络部分
  • 找到路由表中对应的地址的路由条目,将包转发到相应的路由器接口
  • 如果没有找到对应的路由条目,则将包转发到路由器对应的默认路由的接口,如果没有配置默认路由,将包丢弃,返回目标不可达信息
  • 到达下一个路由器时,在重复上述过程,直到到达目标地址对应的网段。

整个包传输过程,目标地址,源地址和端口号不会改变,但是MAC地址会发生变化,每经过一个路由器转发,MAC地址会被重新封装一次,封装为下一跳的MAC地址。

一般来说,静态路由的优先级最高,如果配置了静态路由,会优先使用静态路由转发。

由于路由转发的数据量非常大,所以不可避免的会出现路由环回(数据包在一个闭环的环路中不停的转发,始终到不了目标地址)的情况,避免这种情况的方法就是在数据包中封装一个TTL字段,该字段的意义就是最大转发跳数,一旦超过这个限制,便会将该数据包丢弃。

路由协议

之前说到有三类路由,直连路由,静态路由和动态路由,动态路由通过路由协议算法自动生成路由表,无需人工维护,那么路由协议又是什么呢?
路由协议就是满足路由器获取路由表需要而定义的一系列算法,目前有两类路由协议,内部网关协议(IGP)和外部网关协议(EGP)

内部网关协议包含多种不同的协议,常用的有:RIP-2,EIGRP,IS-IS,OSPF,前两种采用距离矢量算法,生成路由表,后两种采用链路状态算法生成路由表

外部网关协议只有一种,即BGP协议,采用距离矢量算法

再讲工作原理之前,先简单说一下自治域(AS)的概念
全球的互联网被分为多个自治域,运营商和公司都可以申请自治域号码,但是在中国自治域很少,只有几大运营商拥有自己的自治域,美国的很多公司都申请了自治域,这也在一定程度上说明我们国家的互联网发展使比较弱势的。
内部网关协议针对的是一个自治域内部的数据转发,外部网关协议则是针对不同自治域直接的数据转发。下面选取三个有代表性的路由协议,简单说明一下路由协议的工作原理

RIP-2

RIP-2协议采用距离矢量算法,采取最小跳数采取最佳转发路径,针对业务量较小的额网络是没有问题的,但是针对业务量较大的运营商网络,这种算法就显得有些捉襟见肘了。
每隔30秒将距离向量信息传送到相邻的路由器,路由表中只存储到目的地址最佳路径的下一跳地址,该路由协议允许的最大跳数为15跳,也就是说15次转发后还没有到达目的地址,那就将数据包丢弃。
该算法的优点是简单,但缺点也很明显,就是每个路由器只关心自己邻居的状态,无法获取的网络中其他路由器的状态,当关键位置的路由信息改变之后,就无法实时更新自身的路由表,现在使用的已经不多了。

IS-IS

IS-IS和OSPF是目前使用最多的内部网关协议,他们的工作原理也大致相同。
首先明确几个基本概念:

  • 最短路径算法(SPF):把每一台路由器作为一个根,计算到其他目的路由的距离,每一台路由根据统一的数据库计算AS拓扑结构图,即最短路径树,最短路径树的树干长度,即为路由器至每个路由的距离,即路由成本。
  • 链路状态协议:基于最短路径优先算法,该协议提供了整网的拓扑视图,根据拓扑图计算到达每个目标的最优路径;当网络变化是触发更新,发送周期性更新链路状态通告。
  • LSP:链路状态协议数据单元,包含有关邻居和通道成本的信息,接收路由器用LSA来维护其路由选择表
  • Hello报文:用于建立邻居关系,每10s发送一次,无效间隔时间40s,40s内没有接收到邻居的Hello报文,路由器就认为那个邻居不存在
  • LSR:链路状态请求信息,告知邻接路由器提供LSA信息
  • LSU:链路状态更新信息,一般用来响应LSR信息
  • LSAck:用来确认已收到LSU信息
  • LoopBack:类似于物理接口的逻辑接口,用于线路环回测试,或对路由器远程登录,一般将该地址作为路由器的RouteID
  • NET地址:包含三个部分
    Area ID:标识路由器所在区域,1–13个字节
    SYSTEM ID:AS里唯一标识一个路由器,固定6字节
    SEL:标识IS-IS应用的网络,固定1字节,设置为0是用于IP网络
    一个中间系统必须有一个NET,所有NET的SYSTEM ID必须相同,不同中间系统NET地址不能相同。

下面来看一下工作原理:

  • 建立邻接关系,相邻路由器互发Hello报文,验证相关参数,即可建立邻接关系
  • 链路状态信息泛洪:链路状态信息在整个网络中传播。
    发生链路状态变化的节点产生一条新的LSP信息,并通过组播地址发送给自己的邻居;
    邻居收到新的LSP,将LSP信息进行序列号相关的比较,将新的LSP安装到自己的LSP数据库中标记为flooding,并通过PSNP(部分时序协议数据单元)进行确认;
    邻居将新的LSP发送给自己所有邻居,完成扩散。由于单进程内路由器数量不多,通常完成一次泛洪时间很短;
  • 数据库中有缺少或需要更新的消息,会通过LSR,LSU,LSAck报文互相索取相应的资料
  • 完成泛洪后,每个路由器都能知道网络中其他路由器的链路状态信息,然后根据链路状态协议构建最短路径树,计算最短路径

BGP

BGP是唯一一个外部网关协议,首先先了解几个基本概念:

  • AS:自治域,AS之间协商部署BGP协议
  • BGP Spreaker和Peer:发送BGP消息的路由器称为BGP Spreaker,互相交换消息的BGP Spreaker称为对等体(Peer)
  • BGP连接类型:有两种方式,IBGP和EBGP,IBGP不一定要求物理连接,但要求逻辑连接,EBGP要求物理连接
  • BGP TTL:EBGP=1,IBGP=255
  • BGP AS_PATH:发送给BGP邻居时添加上自己的AS号码,防止出现路由环路,所以这个字段包含了所有经过的AS集合,如果有多条路径,会优先选择AS_PATH最短的路径。
  • RR路由反射器:一个AS内部有n台路由器,那么正常来说就要建立n(n-1)/2个连接,这对CPU资源消耗非常大,所以引进了RR路由反射器,他作为一个特殊的路由器,与每一个客户机之间建立IBGP连接,作用就是在其他路由器之间反射路由信息,这样其他路由器即使不建立连接,也可以通过RR路由反射器学习别的路由器的路由信息。
  • open报文:用于建立连接,类似于OSPF的HELLO报文
  • KeepAlive报文:用于保持连接,默认60s发送一次,hold time时间为180s,180s没有收到邻居的KeepAlive报文,则断开连接
  • Update报文:用于携带路由更新信息
  • Notification报文:在发现错误,或关闭与对等体连接时使用

工作原理:

  • 首先建立BGP连接,这一步需要人工配置对等体,建立在TCP协议之上
  • 注入路由,初始状态的路由表为空,只能人工手动导入,两种方式可以导入路由:
    通过命令将IGP路由导入BGP路由,Origin属性为IGP路由属性
    将路由重分布进BGP路由表,Origin属性为Incomplete
  • 路由通告,将获取到的BGP路由信息告知别的对等体,只把自己使用的路由通告给别的对等体,从EBGP获取的路由会向所有BGP对等体通告,从IBGP获取的路由依据IGP与BGP同步情况,决定是否向所有BGP对等体通告。
  • 路由更新,
    初始化时发送所有的路由给BGP对等体。
    本地保存发送的信息。
    当本地收到新的路由信息时,与保存的信息进行对比,未发送过或发送的信息与本地保存的信息不一致,则发送该路由信息,并更新本地保存的路由信息。
    发现一条路由失效信息,则向对等体发送一个路由撤销信息。
    只发送路由增量信息,保证最小通信量。
  • 避免路由环路,AS之间通过携带AS_PATH标记所走过的AS,避免产生环路;AS内部,BGP在AS内部学到的路由信息不再通告给AS内部的BGP邻居,避免产生环路。

以上就是路由器学习的一些总结,构建网络结构,离不开一台台路由器之间的相互配合,选择一个合适的路由协议算法,是保证网络安全性和高效率的必要条件,互联网中每时每刻都有成千上万个数据包在传输,这些数据包不产生冲突,不产生路由环回的情况下,选择一条最优的路径,需要各个学科之间的相互配合。
尤其是数学,网络结构实际上就是一个数学上的拓扑结构,所以用研究数学的方法,来研究网络,会产生事半功倍的效果,这也是华为任正非非常强调数学的作用的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路由器学习总结 的相关文章

  • 网络安全期末复习

    前言 本文用于网络安全课期末复习资料 都是从老师上课讲的ppt和课本总结的 可能不太全 后面有一部分习题 填空和简答 如果需要word版可以找我要 目录 知识点 信息安全属性 网络防御模型 密码体制 数字证书与公钥基础设施 PKI 防火墙

随机推荐

  • 油盐微服务——声明式服务调用Feign

    文章目录 Feign快速入门 参数绑定 继承特性 Ribbon配置 Hystrix配置 对于前面的Ribbon和Hystrix的介绍 Spring Cloud Feign基于Netflix Feign实现 封装整合了以上两个工具 来简化开发
  • Apache mod_wsgi模块简介

    Apache HTTP服务器的mod wsgi扩展模块 实现了Python WSGI标准 可以支持任何兼容Python WSGI标准的Python应用 出于安全的考虑 建议使用mod wsgi 3 5及以后的版本 最新版本是2017年1月发
  • [C/C++]内存管理,对内存进行操作

    目录 一 内存结构 二 内存拷贝函数 三 栈空间与堆空间 四 变量的四种存储类型 五 函数返回值使用指针 六 常见错误总结 个人主页 北 海 CSDN新晋作者 欢迎 点赞 评论 收藏 收录专栏 C C 希望作者的文章能对你有所帮助 有不足的
  • Python写2048小游戏全部代码及所用图片

    鉴于有很多朋友要图片 把整个项目上传了 自行去取吧 资源地址 https download csdn net download qq 44651842 20009590 游戏效果 游戏用到的图片 数字图片都是90像素的正方形 游戏代码 20
  • python外星人入侵添加音效_Python 项目实践一(外星人入侵)第一篇

    python断断续续的学了一段实践 基础课程终于看完了 现在跟着做三个小项目 第一个是外星人入侵的小游戏 一 Pygame pygame 是一组功能强大而有趣的模块 可用于管理图形 动画乃至声音 让你轻松的开发出想要的游戏 二 安装Pyga
  • sqlite的事务和锁,很透彻的讲解 【转】

    原文 sqlite的事务和锁 http 3y uu456 com bp 877d38906bec097sf46se240 1 html 事务 事务定义了一组SQL命令的边界 这组命令或者作为一个整体被全部执行 或者都不执行 事务的典型实例是
  • 概念题3

    SaaS的意思是软件服务化 Software as a Service Windows上的共享文件传输使用哪个端口137 138 139 445 我国PCM数字设备间的传输接口码型是HDB3 调制解调的目的是 MVC全名是Model Vie
  • 基于SSM的在线考试系统

    全网粉丝20W csdn特邀作者 博客专家 CSDN新星计划导师 java领域优质创作者 博客之星 掘金 华为云 阿里云 InfoQ等平台优质作者 专注于Java技术领域和毕业项目实战 文末获取项目下载方式 一 项目背景介绍 在线考试借助于
  • 全网最详细,Fiddler抓包实战 - 网页浏览器https请求(超详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Qt-D指针和Q指针及使用

    阅读Qt的源代码的时候 我们经常看Q D Q Q Q DECLARE PRIVATE Q DECLARE PUBLIC这几个宏 这几个宏是干什么用的呢 其实这几个宏就是实现D指针和Q指针的宏 D指针在Qt的源码中大量使用 根本目的在于解决二
  • Cocoapods方式导入OC库和swift库

    Cocoapods 是 iOS 应用的包管理程序 它简化了第三方库的导入并且将帮你处理库之间的依赖 在这个教程中 我们将会使用 cocoa pods 导入 Alamofire swift库 和AFNetworking OC库 这两个个第三方
  • Spring Cache详解

    第一节 Spring Cache介绍 1 Spring Cache 简介 从3 1开始 Spring引入了对Cache的支持 其使用方法和原理都类似于Spring对事务管理的支持 Spring Cache是作用在方法上的 其核心思想是这样的
  • 机器学习 加利福尼亚房价预测

    学习目标 提示 导入包 例如 import pandas as pd import numpy as np from sklearn datasets import fetch california housing from sklearn
  • 【web开发】6、Django(1)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一 Django是什么 二 使用步骤 1 安装Django 2 创建项目 3 创建app 4 快速上手 数据库操作 1 安装第三方模块 2 自己创建数据库 3 DJ
  • Linux问题—主机与虚拟机相互通信及虚拟机访问外网

    相互通信指的是 主机 host 和虚拟主机 Vhost 能相互访问 宿主机及同一个局域网中的其他计算机能够访问到虚拟机 虚拟机也能访问到网络中的其它机器 当然包括宿主机 在我们接触的应用中 最常见的应该是互传文件了 比如 校内ftp 几秒钟
  • 利用Python查询IP地址

    听说最近抖音快手都可以看IP地址了 肯定还有很多同学不知道怎么查询吧 一文讲清楚 从http freeapi ipip net和http ip api com json 这两个网站提供的免费调用接口查询IP地址归属地 接口调用方法是在url
  • 实战干货!用 Python 爬取股票实时数据!

    今天我们一起来学习一个 Python 爬虫实战案例 我们的目标网站就是东方财富网 废话不多说 开搞 网站分析 东方财富网地址如下 http quote eastmoney com center gridlist html hs a boar
  • openGL之API学习(三十八)投影变换公式

    原文在https blog csdn net gggg ggg article details 45969499 这里只记录几个重要结论 1 正交投影变换 1 1一般形式 1 2常用形式 2 透视投影 2 1一般形式 2 2常用形式 经过投
  • Git修改代码并提交上传

    1 创建本地git 仓库 在本地磁盘创建一个文件夹 用来存放需要push到coding上的文件 打开此文件夹 单击右键 git bash here 输入 git init 此步操作完成后 会在此文件夹下生成一个隐藏的 git后缀文件 2 添
  • 路由器学习总结

    路由器在网络中的作用至关重要 就好像我们坐公交车到某个地方 公交车肯定不是一站直达的 中间要经过许多个公交站点 网络中数据的传输也是一样 源地址与目标地址之间并不是直接到达的 中间也要经过一系列的路由器转发 所以路由器的作用 就是用来转发数