互联网的路由选择协议

news2024/10/2 16:26:33

互联网的路由选择协议

文章目录

    • 互联网的路由选择协议
    • 路由选择协议的几个概念
      • 分层次路由选择协议
      • 内部网关协议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版》

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

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

相关文章

如何获取 openai ChatGPT的key?(图文教学)

我直接对他进行询问 Q:获取chatptp的key A:对不起,作为ChatGPT,我不具有API密钥或访问凭据。我只是一个已经被训练好的自然语言处理模型,通过输入文本来生成回复。您可以在OpenAI的网站上了解有关他们的API和访问凭据…

Gif动态图片怎样在线生成?一招快速完成gif在线制作

Gif表情包作为日常聊天中必备的气氛调和剂,不仅能够更好的表达出自己的内心情绪,还能够缓解聊天的尴尬。那么,要怎么制作gif表情包呢?下面,介绍两个简单的方法,轻松一键就能在线完成gif制作(htt…

Linux安装elasticsearch-head

elasticsearch-head 是一款专门针对于 elasticsearch 的客户端工具,用来展示数据。 elasticsearch-head 是基于 JavaScript 语言编写的,可以使用 Nodejs 下的包管理器 npm 部署。 1 安装Nodejs nodejs下载地址: https://nodejs.org/en/dow…

记一次OOM

1,问题描述: 新上了一版代码之后,上游服务请求我们服务失败,报错:“服务不可用”,发现注册中心上服务掉线,查询日志:发现oom:Java heap space,GC overhead limit exceeded。 容易…

国产电容式触控IC的工作原理及应用

国产电容式触控IC采用CMOS工艺,内建稳压和驱动电路,具有高可靠性、高灵敏度、超低功耗、强稳定性、抗干扰能力强、宽工作电压等方面优点,专为取代光感和传统按键开发而设计。 电容式触控芯片 - CT8225是一款使用电容感应式原理设计的触摸芯片…

Linux_基本指令

新的专栏Linux入门来啦!欢迎各位大佬补充指正!! Linux_基本指令导入文件绝对路径与相对路径隐藏的文件指令ls查看stat查看文件属性cd进入路径mkdir创建目录touch创建文件rm删除man查询手册cp复制mv移动cat查看文件morelessheadtail时间相关的…

redis分布式锁的演变过程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、直接添加Redis缓存二、使用setnx执行抢锁过程三、setnx获取锁+设置过期时间四、引入UUID解决误删锁问题五、引入Lua脚本来做删除六、对递归部分优化进行自旋七、添加自旋次数八、改为重入锁,使…

Grafana loki部署及使用及问题处理方法(超详细)

一、下载软件 因为我是本地测试,所以用的windows版本的包,loki服务window版本的安装包下载地址:下载地址,选择 promtail-windows版本的安装包下载地址:下载地址 Grafana服务的下载地址:下载地址 二、配置…

月薪过万的那些人,大部分都是做什么工作的?

三百六十行,行行出状元。不管是什么行业,月薪过万都是有的。只不过有些行业就是比较容易出现月薪过万,换句话说,就是这个行业内出现月薪过万的人数比较多。先说结论,综合来看月薪过万的这部分90后,大部分集…

JavaScript语法学习--《JavaScript编程全解》

《JavaScript编程全解》 JavaScript琐碎基础 0.前言 1.RN: react native是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,支持iOS和安卓两大平台。 2.ts与js js:是弱…

[CentOS] Dell塔式服务器安装CentOS7

主要基于 UEFI GPT方式引导,LegacyMBR的方式这里不做讨论 目录基础信息BIOS设置U盘制作启动盘启动安装注意事项基础信息 CentOS7.5UltraISO 9.3.x机型:DELL OPTIPLEX 7080机型: DELL OPTIPLEX 5090机型: DELL OPTIPLEX 300U盘&a…

ChatGPT 未来会造成大量职业的裁员和失业吗?

大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,今天让我们一起来看看吧! 1、chatGpt来自那个国家? ChatGPT是一种聊天机器人技术,它来自美国,由OpenAI公司开发。…

HR管理系统的五大选择特点

市面上的HR管理系统那么多,难免选的眼花缭乱。我们的建议是,就根据你们自己的需求来,满足自身需求的,才是最好的。当然价格页得考虑。如果HRMS与你的组织需求不一致,则会妨碍有效的HR管理。跟着下面的步骤去选一款HR产…

第四章 - 基础查询语句(select,distinct,limit)

基础查询语句,select,distinct,limit查询单列数据查询多列数据查询所有数据去重查询(distinct)限制查询结果(limit)查询单列数据 在列名和函数没有冲突的时候可以不用加前后的比如有时候时间的…

微信小程序|基于小程序+C#制作一个超酷的个人简历

你还在用以前的方式投简历吗?趁着金三银四来临之际,跟随此文使用小程序制作一个便携超酷的个人简历,高调炫技,愉快的收offer吧! 一、小程序

内存泄漏检测组件 -- mtrace

目录 用mtrace检测内存泄漏 使用addr2line定位代码 C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 用mtrace检测内存泄漏 描述: mtrace()函数为内存分配函数安装hook(钩子)函数【malloc()、realloc()、memalign()&am…

Python语言零基础入门教程(十九)

Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误。你可以使用该功能来调试python程序。 1、异常处理 2、断言(Assertions) python标准异常 什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生&…

【原创】java+jsp+servlet学生信息管理系统(jdbc+ajax+filter+cookie+分页)

一直想写一个比较基础的JavaWeb项目,然后综合各种技术,方便Java入门者进行学习。学生信息管理系统大家一般接触的比较多,那么就以这个为例来写一个基础项目吧。 需求分析: 使用jspservletmysql开发的学生信息管理系统&#xff0…

Git 基本操作之Git GUI界面和git命令行如何选择

1. 为啥推荐使用git命令行 我发现公司有很多的同事都喜欢使用git的GUI界面工具,喜欢鼠标点点点就完成了代码的提交,这种方式的确是比较简单便捷,但是却存在风险。先上一个事故给大家醒醒脑。 VScode Git 界面操作引发的惨案 上面的惨案是VS…

抖音共创是什么?怎么操作全集教程!

抖音共创是什么?怎么操作全集教程!#抖音合集#抖音共创#抖音seo , 开通抖音合集功能的好处 #抖音合集怎么弄 #抖音合集创建指南 #抖音合集功能 #抖音seo 抖音合集的功能真的是太有用了,视频播放量低的,没有搜索流量的…