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

互联网的路由选择协议

互联网的路由选择协议

文章目录

    • 互联网的路由选择协议
    • 路由选择协议的几个概念
      • 分层次路由选择协议
      • 内部网关协议RIP协议
        • 距离向量算法
        • RIP协议的报文格式
      • 内部网关协议OSPF
        • OSPF的报文格式
        • ✨OSPF的特点
      • 外部网关协议BGP
        • BGP的报文格式
    • 参考

本篇主要讨论的是路由表中的路由是如何得出来的。

路由选择协议的几个概念

理想路由算法应该具有的一些特点:

  • 算法必须是正确的和完整的 “正确”指的是:沿着路由表所指引的路由,分组一定能够最终到达目的网络和目的主机。
  • 算法在计算上应简单 路由选择的计算不应使网络通信量增加太多
  • 算法你能适应通信量和网络拓扑结构的变化 换个说法是自适应性
  • 算法应具有稳定性 在网络拓扑结构相对稳定的情况下,路由算法应该收敛于一个可接受的解。
  • 算法是公平的 路由选择算法应对所有的用户都是平等的。
  • 算法应是最佳的 路由选择算法应能够找出最好的路由。所谓的“最佳”只能是相对于某一种网络特定要求下得出的较为合理的选择

对路由算法按照能否根据网络的通信量或拓扑结构自适应地进行调整变化来分,可以分为静态路由选择策略动态路由选择策略

静态路由选择也叫做非自适应路由选择,特点是简单开销小,但不能即使适应网络状态的变化。比较适用于简单的小网络。

动态路由选择也叫做自适应路由选择,其特点是能较好地适应网络状态的变化,但实现起来较为复杂,开销也比较大。

分层次路由选择协议

互联网采用分层次的路由选择协议,有两个原因:

  1. 互联网的规模非常大,如果让所有的路由器知道所有的网络应该怎么表达,这种路由表将会非常大。
  2. 单位不愿意外界了解自己网络单位的布局细节和本部门所采用的路由选择协议。

所以将整个互联网划分为许多个自治系统 AS (autonomous system)

互联网把路由选择协议划分为两大类:

  1. 内部网关协议 IGP(Interior Gateway Protocol) 目前这类路由选择协议使用得最多,如RIPOSPF协议。
  2. 外部网关协议EGP(External Gateway Protocol) 可以联系不同的AS。最常用的是BGP

IMG_20230215_130459_edit_46126319356502

自治系统之间的的路由选择叫做域间路由选择(interdomain routing),而在自治系统内部的路由选择叫做域内路由选择(interdomain routing)

img

内部网关协议RIP协议

**RIP(Routing Information Protocol)**是一种分布式的基于距离向量的路由选择协议。RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。RIP协议中的距离即跳数

RIP协议的特点:

  1. 仅和相邻的路由器交换信息
  2. 路由器交换的信息是当前本路由器知道的全部信息,即现在的路由表
  3. 按照固定的时间交换路由信息

在路由器刚开始工作的时候,它的路由表是空的。然后路由器就得出到直接相连的几个网络的距离。接着,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。

距离向量算法

对每一个相邻路由器发送过来的RIP报文,按照以下步骤:

  1. 对地址为X的相邻路由发来的RIP报文,先修改报文中的所有项目:把吓一跳字段中地址都改为X,并把所有的“距离”字段值加1.每一个项目都有三个关键数据,即:到目的网络N,距离是d,下一跳路由是X
  2. 对修改后的RIP报文中的每一个项目,进行以下步骤:
    • 若原来的路由表中没有目的网络N,就把该项目添加到路由表中
    • 否则(这个项目在路由表中的项目是:到目的网络N,但下一跳路由器不是X)
      • 若收到的项目中的距离d西澳娱路由表中的距离,则进行更新
      • 否则什么也不做
  3. 若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由记为不可达的路由器,即把距离置为16
  4. 返回

RIP协议的报文格式

下图是RIP2的报文格式,它和RIP1的首部相同,但后面路由部分不一样。RIP协议使用运输层的UDP进行传送。

IMG_20230215_133856_edit_48032257218711

RIP的首部占4个字节:

  • 命令 占1字节,指出报文段的意义。1表示请求消息;取值为2时表示是响应消息
  • 版本 占1字节,指出RIP报文的版本
  • 保留 占两字节,用0填充

路由部分

  • 地址族标识符(地址类别) 用来标志所使用的地址协议。如采用IP地址就令这个值为2
  • 路由标记 用于填入自治系统号ASN,考虑到RIP可能收到其他自治系统的路由选择信息
  • 网络地址
  • 子网掩码
  • 下一跳路由地址
  • 距离(跳数)

RIP的缺点

当网络出现故障时,要经过比较长的时间才能将此信息传送到所有路由器

RIP的优点

实现简单,开销小

内部网关协议OSPF

开放最短路径优先OSPF(Open Shortest Path First)采用了Dijkstra 提出的最短路径算法SPF

OSPF最主要的特征就是使用分布式的链路状态协议。和RIP相比,OSPF的三个要点和RIP不一样:

  1. 使用洪泛法,向自治系统中所有路由器发送信息。这就是先用路由器向所有输出端口向相邻的路由器发送信息,相邻的路由器又将此信息发往其相邻的路由器(但不发送给刚刚发来信息的那个路由器)
  2. 发送的信息就是与本路由器相邻的所有路由器的链路状态。所谓的链路状态说的时本路由器和哪些路由器相邻,以及该链路的“度量”。
  3. 只有当链路状态发生变化时,路由器才向所有路由用洪范法发送此消息

为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域

IMG_20230215_142323_edit_48564284638943

OSPF使用层次结构的区域划分。在上层的区域叫做主干区域,用于连通其他在下层区域。其他区域的信息都来自区域边界路由器进行概括。主干区域内的路由器都是主干路由器。主干区域中专门和其他自治系统相连的路由器叫做自治系统边界路由器

OSPF的报文格式

OSPF直接使用IP数据报传送(其IP数据报首部的协议字段值为89).

IMG_20230215_142025_edit_48503290244160

OSPF首部各字段含义:

  1. 版本 当前的版本号为2

  2. 类型 5种类型

    • 问候(Hello),用来发现和维持邻站的可达性

      OSPF规定每隔10s要与相邻的路由器交换问候分组,以确保邻站的可达。若有40s未收到邻站的问候分组,则认为该邻站不可达,机会修改链路状态数据库

    • 数据库描述(Database Description) 向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息

    • 链路状态请求(Link State Request) 向对方请求发送某些链路状态项目的详细信息

    • 链路状态更新(Link State Update) 用洪范法对全网更新链路状态

    • 链路状态确认(Link State Acknowledgment) 对链路更新分组的确认

  3. 分组长度 包括OSPF首部在内的分组长度,以字节为单位

  4. 路由器标识符 标志发送给该分组的路由器的接口IP地址

  5. 区域标识符 分组属于的区域的标识符

  6. 检验和 检验分组中的差错

  7. 鉴别类型 目前只有两种:0——不用,1——口令

  8. 鉴别 鉴别类型为0时就填入0,鉴别类型为1则填入8个字符的口令

除了问候类型的OSPF报文其他四种类型都是用来进行链路数据库的同步。下图给出了OSPF的基本操作,说明了两个路由器需要交换各种类型的分组。

IMG_20230215_144956_edit_48807081705051

下图为可靠的洪范法发送更新分组的过程

IMG_20230215_145634_edit_48951651533154

✨OSPF的特点

  1. OSPF 允许管理员给每条路由指派不同的代价
  2. 如果到同一个目的的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做负载平衡
  3. 所有在OSPF路由器之间交换分组,都有鉴别的功能
  4. OSPF支持可变长度的子网划分和无分类的编址CIDR
  5. 由于网络中的链路状态可能发生变化,因此OSPF让每个链路状态都带上一个32位的序号,序号越大状态就越新。

外部网关协议BGP

边界网关协议BGP只是为了寻找一条能够到达目的网络比较好的路由,而不是要找一条最佳路由。BGP采用了路径向量路由选择协议

在配置BGP的时候,每个自治系统的管理员至少选择一个路由器作为该自治系统的BGP发言人。一般来说有两个BGP发言人都是通过一个共享网络连接在一起的。BGP发言人往往就是BGP边界路由器

IMG_20230215_151820_edit_49179250941974

简化后可变成

IMG_20230215_151859_edit_49223955550300

BGP发言人构造的自治系统是树形结构,不存在回路。

BGP的报文格式

IMG_20230215_152452_edit_49303739899767

BGP使用TCP进行发送

BGP的通用报文包含三个字段。

  • 标记 字节,用于鉴别收到的BGP报文
  • 长度 2字节,指出把包含通用首部在内的整个BGP报文以字节位为长度
  • 类型 1字节,现在对应四种类型
    • 类型1 OPEN报文 共6个字段。用来和相邻的另一个BGP发言人建立关系,通信初始化。
      • 版本号 1字节
      • 本自治系统号 2字节
      • 保持时间 2字节
      • BGP标识符 4字节
      • 可选参数长度 1字节
      • 可选参数
    • 类型2 UPDATE报文共5个字段。用于通告某一路由信息,以及要列出要撤销的多条路由。
      • 不可行路由长度 2字节,指明下一个字段的长度
      • 撤销路由 列出所有要撤销的路由
      • 路径属性总长度 2字节,指明下一个字节的长度
      • 路径属性 定义在这个报文中增加的路径属性
      • 网络层可达性信息 NLRI 定义发出此报文的网络,包括网络的前缀位数,IP地址前缀
    • 类型3 KEEPLIVE报文只有BGP的19字节长的通用首部。用来周期性地证实邻站的连通性
    • 类型4 NOTIFICATION报文有3个字段。用来发送检测到的差错
      • 差错代码 1字节
      • 差错子代码 1字节
      • 差错数据 给出有关差错的诊断信息

参考

  • 什么是BGP
  • 《计算机网络 第7版》

相关文章:

互联网的路由选择协议

互联网的路由选择协议 文章目录互联网的路由选择协议路由选择协议的几个概念分层次路由选择协议内部网关协议RIP协议距离向量算法RIP协议的报文格式内部网关协议OSPFOSPF的报文格式✨OSPF的特点外部网关协议BGPBGP的报文格式参考本篇主要讨论的是路由表中的路由是如何得出来的。…...

接口幂等性处理

1.Token 机制: a首先客户端请求服务端,获取一个 token,每一次请求都获取到一个全新的 token(当然这个 token 会有一个超时时间),将 token 存入 redis 中,然后将 token 返回给客户端。 b客户端…...

数字孪生智慧机场:透视数字化时代下的航空运营

在《智慧民航建设路线图》文件中,民航局明确指出,智慧机场是实现智慧民航的四个核心抓手之一。这一战略性举措旨在推进数字化技术与航空产业的深度融合,为旅客提供更加智能化、便捷化、安全化的出行服务,进一步提升我国民航发展的…...

SpringBoot 文件上传后查看404的问题和解决404后需要访问两次才能查看的问题

文件上传、图片上传的实现见这个: SpringBootVue 实现头像上传功能_Teln_小凯的博客-CSDN博客 在实现上面的功能后,发现查看图片的时候提示404,解决这个方法如下: 1、配置资源静态文件映射 第一个参数是页面请求的地址&#x…...

定时任务使用总结

定时任务表达式生成工具网站:https://cron.qqe2.com/定时任务选型:xxl-job 官方文档:https://www.xuxueli.com/xxl-job/安装定时任务调度中心 xxl-job-admin第一步、先导入xxl-job的数据库:地址:https://gitee.com/xux…...

Jira和Confluence Server版终止支持倒计时365天,企业应对策略汇总

本文对Atlassian最新的Server版政策进行了解读,并给出应对方案;同时我们也将国内热门的替代工具与jira进行了比较细致的对比,以及介绍替换的优惠政策等。今天是2023年2月15日,距离 Atlassian 旗下 Jira、Confluence 等系列产品中国…...

GEE学习笔记九十一:栅格影像叠置分析

最近发现好多人都在问一个问题,两张影像如何取其相交区域?其实这个问题简单来讲就是多张栅格影像进行叠加分析。在GEE中栅格影像不像矢量数据那样有直接的函数来做数据分析,需要我们自己手动写一些代码来实现这些操作。要实现这个功能有很多方…...

linux系统编程入门

一、搭建环境 1、安装 Linux 系统(虚拟机安装、云服务器) https://releases.ubuntu.com/bionic/ 2、安装 XSHELL、XFTP https://www.netsarang.com/zh/free-for-home-school/ 3、安装 visual studio code https://code.visualstudio.com/ 4、Linu…...

JS代码安全防护常见的方式

文章目录1. 常量的混淆1.1 十六进制字符串1.2 unicode字符串1.3 字符串的ASCII码混淆1.4 字符串常量加密1.5 数值常量加密2. 增加逆向分析难度2.1 数组混淆2.2 数组乱序2.3 花指令2.4 jsfuck3. 代码执行流程的防护3.1 流程平坦化3.2 逗号表达式4. 其他代码防护方案4.1 eval加密…...

PHP(13)HTTP协议

PHP(13)HTTP协议一、HTTP请求1. 请求行2. 请求头3. 请求体二、HTTP响应1. 响应行2. 响应头三、设置HTTP响应四、模拟HTTP请求一、HTTP请求 1. 请求行 请求行独占一行。形式:请求方式 资源路径 协议版本号 GET /index.php HTTP/1.1 2. 请求…...

基于支持向量机 (SVM) 用php实现预测气温

Windows 10自带的天气应用有一个基于历史数据预测气温的功能,有一定的参考价值。那么如何去实现这一功能呢?本文采用php进行实现。 使用机器学习方法实现预测当日气温的算法需要涵盖许多的步骤,以下是一种基于支持向量机 (SVM) 的算法的简化…...

MySQL(五)

通过索引进行优化 索引基本知识 索引的优点 1、大大减少了服务器需要扫描的数据量2、帮助服务器避免排序和临时表3、将随机io变成顺序io 索引的用处 1、快速查找匹配WHERE子句的行2、从consideration中消除行,如果可以在多个索引之间进行选择,mysql通常会使用找到…...

Linux常用命令2

目录1.查找find(1)普通用法(2)组合用法2.xargs命令3.管道符4.查看文件内容(1)查看两个文件的差别:diff file1 fille2(2)正序查看文件内容cat(3)倒序查看文件内容tac(4)分页查看文件内容more(5)分页查看文件内容less(6)…...

『C/C++养成计划』Visual Studio Code编辑器配置(外观通用型扩展Minmal)

Visual Studio Code编辑器配置(外观&通用型扩展&Minmal)! 文章目录 一. vscode配置外观|通用型扩展1.1. 色彩主题配置扩展(GitHub Theme)1.2. 图标主题扩展(Material Icon Theme)1.3. 代码高亮扩展(better-comments)1.4. 错误警告扩展(error lens)1.5. 执行代码扩展(c…...

设计模式(适配器模式)

设计模式(适配器模式) 第二章 设计模式之适配器模式(Adapter) 一、Adapter模式介绍 适配器模式位于实际情况和需求之间,填补两者之间的差距。 二、示例程序1(使用继承的适配器) 1.示例程序示…...

在基于全志D1s的芒果派麻雀上运行国产开源rt-smart系统

想必RT-Thread系统大家不陌生了,RT-Thread Smart(简称 rt-smart)是基于 RT-Thread 操作系统衍生的新分支,面向带 MMU,中高端应用的芯片,例如 ARM Cortex-A 系列芯片,MIPS 芯片,带 MM…...

【代码随想录训练营】【Day15】第六章|二叉树|层序遍历|226.翻转二叉树|101.对称二叉树

层序遍历 题目详细:LeetCode.102 层序遍历与上一节讲的三种遍历方式有所不同,层序遍历是指按从上到下,从左到右的顺序,逐层地遍历二叉树的节点。 从其节点的遍历顺序上观察,我们可以发现其跟广度优先遍历&#xff0…...

基于圆展开自适应三边测量算法的室内定位

基于圆展开自适应三边测量算法的室内定位 具有无线通信功能的移动设备的日益普及刺激了室内定位服务的增长。室内定位用于实时定位设备位置,方便访问。然而,由于大量障碍物,与室外定位相比,室内定位具有挑战性。全球定位系统非常适…...

使用中断子系统实现对LED灯的控制

中断顶半部:不允许耗时操作 代码流程: 1、基于字符设备驱动的注册(手动/自动) 2、基于设备树文件的自定义完成(myled, myirq) 2、基于GPIO子系统实现led的点亮(流水/测试文件控制) 3、中断子系统操作流程 …...

《爆肝整理》保姆级系列教程python接口自动化(十五)--参数关联接口(详解)

简介 我们用自动化新建任务之后,要想接着对这个新建任务操作,那就需要用参数关联了,新建任务之后会有一个任务的Jenkins-Crumb,获取到这个Jenkins-Crumb,就可以通过传这个任务Jenkins-Crumb继续操作这个新建的任务。 …...

【JDK8】MyBatis源码导入Idea

1.背景 为了更好的将MyBatis的开发设计思想带到日常开发工作,将MyBatis源码导入到本地开发工具中(idea)。我自己在导入的时候碰到几个问题,耽误了自己一点时间,这里我把它们记下来,后边的小伙伴可不要踩我的坑。 Java版本&#x…...

三层交换机DHCP中继

关于中继,我们需要有一个对比。正常情况下我们是不是需要配置单臂路由然后开启DHCP地址池,然就设置网段网关以及DNS。这样的话考验 的其实是命令功底。但是为了方便,我们 可以添加服务器,将这个服务给到服务器去配置,这…...

C++之RALL机制

RALL是Resource acquisition is initialization的缩写,意思是“资源获取即初始化”,其核心思想是利用C对象生命周期的概念来控制程序的资源。它的技术原理很简单,如果希望对某个重要资源进行跟踪,那么创建一个对象,并将…...

回溯算法章末总结

组合问题的特点 (1)abba 选中a之后,就不再选了 (2)找出所有的组合 (长度可以不相等) 组合问题模板 做回溯题步骤 (0)判断问题类型 (1)树状图 …...

【SpringBoot】为异步任务规划线程池

一、线程池的作用 防止资源占用无限的扩张调用过程省去资源的创建和销毁所占用的时间 在上一节中,我们的一个异步任务打开了一个线程,完成后销毁。在高并发环境下,不断的分配新资源,可能导致系统资源耗尽。所以为了避免这个问题…...

SAP ABAP 输出结果带有空格

方法一: 字段内容前增加空格,需使用全角空格,使用半角空格时,ALV显示无效,空格无法显示, 全角与半角的切换方法:shift空格切换, 如下的标记部分,要想通过ALV显示空格&…...

Opengl ES之踩坑记

前因 最近在尝试使用Opengl ES实现一些LUT滤镜效果,在实现这些滤镜效果的时候遇到一些兼容性的坑,踩过这些坑后我希望把这几个坑分享给读者朋友们, 希望同在学习Opengl ES的朋友们能少走弯路。 关于LUT滤镜相关的介绍,也是这个O…...

设计模式第六讲:责任链模式和迭代器模式详解

一. 责任链模式1. 背景在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批…...

K8s 架构简介(一)

一、前言 在开始学习K8s之前,让我们对容器有一个基本的了解 1.1 什么是容器 一个容器镜像是一个可运行的软件包,其中包含了一个完整的可执行程序,包括代码和运行时需要应用、系统库和全部重要设置的默认值。 通过将应用程序本身&#xff…...

xshell6运行报错:由于找不到mfc110u.dll、MSVCR110.dll无法继续执行代码

今天给大家分享一下我刚装完系统遇到得问题,由于新盟的罗建雨【胡巴】老师帮我给电脑加了固态,又重装了系统,因此电脑里面得所有软件需要重装,在我重装的过程中遇到了一个小问题给大家分享一下,如果大家以后遇到也方便解决。 问题: 安装Xshell时电脑系统报错:“由于找…...

低价机票网站建设/百度竞价优化软件

sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.plat…...

网站开发需求方案模板/电脑培训班价目表

正则表达式 正则表达式,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。 如在注册时需要输入一个邮箱的地址或者手机号码…...

网站建设公司普遍存在劣势/指数搜索

上岸前辈告诉你,考研数学什么时候开始复习最好?摘要:数学基础不好,要不要早早开始复习啊?可战线过长,后期会不会影响复习效果?对于2021考研内心的困惑,帮帮为大家整理了过来人的经验…...

网站建设_seo技术支持/网络运营好学吗

接前面。 回到程序调用关系上来: estimate_rel_size -> RelationGetNumberOfBlocks->RelationGetNumberOfBlocksINFork ->Smgrnblocks->mdnblocks... 折腾了一圈,就是为了评估一个表的大小。 那么,我们所获得的block,…...

如何用电脑做网站服务器吗/云南网站seo服务

点击上方 "zhisheng"关注, 星标或置顶一起成长Flink 从入门到精通 系列文章随着互联网飞速发展,企业业务种类会越来越多,业务数据量会越来越大,当发展到一定规模时,传统的数据存储结构逐渐无法满足企业需求,…...

软件开发学习/南宁优化推广服务

/* 数组的常用函数 * * 数组的排序函数 * sort() * rsort() * usort() * asort() * arsort() * uasort() * ksort() * krsort() * uksort() * uatsort() * natcasesort() * array_multisort() * * 1.简单的数组排序 * sort() rsort() * 2.根…...