计算机网络笔记:内部网关协议RIP
文章目录
- 1.协议RIP的工作原理
- 2.距离向量算法
- 3.坏消息传播得慢
1.协议RIP的工作原理
RIP的地位:RIP是内部网关协议IGP中最先得到广泛使用的协议,其中文译名为路由信息协议。
RIP概述:
- RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大的优点是简单。
- RIP协议要求网络中的每一个路由器都要维护从它自己到每一个网络的距离记录(因为是一组距离,所以构成了距离向量)。
- RIP中距离定义为:
- 从一个路由器到直接相连的网络的距离定义为1;
- 从一个主机到非直接连接的网络的距离定义为所经过的路由器数量加1。加1是因为到达目的网络后就进行直接交付。
- 距离也被称为跳数,并且每经过一个网络,条数就加一。
- RIP认为好的路由就是通过的网络少,也就是距离短。RIP允许一条路径上最多包含15个网络,由此可见RIP只适用于小型互联网。
- RIP不能在两个网络之间同时使用多条路由,而是只选择一条具有最少网络数的路由,哪怕还存在一条高速但网络数量较多的路由。
分布式路由选择协议:RIP协议和OSPF协议都属于分布式路由选择协议,这一类协议的共同特点是每一个路由器都要不断地与其他一些路由器交换路由信息。
RIP的特点:
- 仅与相邻路由器交换信息:如果两个路由器之间的通信不需要经过另外一个路由器,那么这两个路由器就是相邻的。不相邻的路由器不交换信息。
- 交换的信息内容:路由器交换的信息是当前本路由器所知道的全部信息,也就是自己的路由表。路由表中的信息是,每个路由器到本自治系统中所有网络的最短距离,以及到每个网络应该经过的下一跳路由器。
- 按照固定的时间间隔交换路由信息:每隔一段固定的时间,路由器根据收到的路由信息更新路由表。当网络拓扑发生变化时,路由器也及时向相邻路由器通知拓扑变化后的路由信息。
RIP协议路由表的生成过程:路由器刚刚开始工作时,路由表是空的,然后路由表就得出了到直接相连的几个网络的距离。接着,每一个路由器也只和数量1非常有限的相邻路由器交换并更新路由信息。但是经过若干次的更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。一般情况下,RIP可以收敛,并且收敛较快,也就是说自治系统中的所有结点都可以得到正确的路由选择信息。
2.距离向量算法
距离向量算法作用概述:距离向量算法是更新路由器到每个目的网络的最短距离的算法。该算法的基础是贝尔曼-福特算法。
距离向量算法流程:
- 对地址为X的相邻路由器发过来的RIP报文,先需改此报文中的所有项目:把下一跳的地址都改为X,并把所有距离字段加一。每一个项目应该包含三个字段,分别是前往的目的网络,距离和下一跳的路由器。
- 对修改后的RIP报文中的每一个表项,进行下面的步骤:
- 如果原来的路由表中没有目的网络,则把该项目添加到路由表中;
- 如果原来的路由表中有目的网络,并且下一跳的地址就是X,则用收到的项目替换表中原有的项目;
- 如果原来的路由表中有目的网络,但是下一跳的地址不是X,则分情况讨论:如果先前路由的距离更大,则进行替换,否则什么也不做。
- 如果三分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,并把距离设置为16。
距离向量算法的作用:该算法使得每一个路由器到每一个目的网络的路由都是最短的。
注意事项:虽然所有的路由器都最终拥有了整个自治系统的全局路由信息,但是由于每一个路由器的位置不同,它们的路由表自然也是不同的。
RIP协议的版本:目前较新的RIP版本是RIP2。新版本本身并无太大变化,但是性能上有所改进,并且支持无分类域间路由选择。
RIP报文:
- 传输方式:RIP报文作为运输层用户数据报UDP的数据部分进行传送,使用UDP的端口520。
- 组成部分:RIP报文由首部和路由两部分组成。路由部分写入自治系统号ASN,这个是考虑到RIP有可能接收到本自治系统之外的路由选择信息;还要指出目的网络地址、下一跳路由器地址以及到此网络的距离。
3.坏消息传播得慢
RIP存在的一个问题:当网络出现故障时,要经过比较长的时间才能将此信息传送给所有的路由器。这个特点被称为:好消息传播得快,坏消息传播得慢。
RIP协议的评价:
- 优点:实现简单,开销较小。
- 缺点:
- 限制了网络的规模;
- 随着网络规模的增大,交换完整路由表信息的开销也增加;
- 坏消息传播得慢。
相关文章:
计算机网络笔记:内部网关协议RIP
文章目录 1.协议RIP的工作原理2.距离向量算法3.坏消息传播得慢 1.协议RIP的工作原理 RIP的地位:RIP是内部网关协议IGP中最先得到广泛使用的协议,其中文译名为路由信息协议。 RIP概述: RIP是一种分布式的基于距离向量的路由选择协议&#x…...
基于Java学生信息管理系统设计实现(源码+lw+部署文档+讲解等)
博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…...
PHP简单入门
PHP是一种流行的服务器端编程语言,被广泛用于Web开发。许多著名的网站和应用程序都是使用PHP编写的,例如Facebook、Wikipedia和WordPress等。本篇文章将为您介绍如何入门PHP编程。 环境配置 在开始使用PHP之前,需要先配置开发环境。要在本…...
java 客户端操作HDFS
1、windows上部署hadoop包 部署包win版本 源码包zip包 lib整合:共121个jar包 $HADOOP_PREFIX/share/hadoop/{common,hdfs,mapreduce,yarn,tools}/{lib,.}*.jar 将windows版本hadoop/bin/hadoop.dll 放到c:/windows/system32下 2、windows环境变量配置 hadoop的…...
区块链中的共识机制以及共识算法
目录 什么是共识 什么是共识机制 共识机制类型 1、基于工作证明(Proof of Work PoW)...
【计算机网络自顶向下】DNS简答题总结
主要功能:将域名解析为主机能识别的IP地址 DNS实现的功能 主机到IP地址的转换主机别名的转换邮件服务器别名负载均衡 DNS实现冗余服务器:一个IP地址集合对应同一个规范主机名 域名系统 分布式数据库:一个由多层DNS服务器实现的分布式数据库应…...
【QQ界面展示-实现自动回复 Objective-C语言】
一、刚才咱们监听键盘弹出事件,是怎么监听的, 1.监听键盘弹出事件的步骤 1)首先,在控制器的viewDidLoad方法中,创建一个NotificationCenter对象啊 2)通过center,让当前控制器的这个方法,监听这个通知, 3)然后,我们在这个通知里面,获取到键盘的Y值, 4)对我们的…...
-bash: ssh: command not found
解决方法: 命令安装SSH: yum -y install openssh-clients [roothad2 ~]# yum -y install openssh-clients Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.qlu.edu.cn * extras: mirrors.ustc.edu.cn …...
ansible的部署和模块
一、 ansible 的概述 1、ansible简介 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具。 它用Python写成,类似于saltstack和Puppet,但是有一个不同和优点是我们不需要在节点中安装任何客户端。 它使用SSH来和节点进行通信。Ansible基于 …...
nginx的优化
目录 一 隐藏版本号在网页上面有nginx的版本号会让别人攻击你的服务器 二 nginx的优化之日志分割 三 nginx的优化之页面压缩 四 连接超时 五 nginx的并发设置 七总结:nginx的优化 一 隐藏版本号在网页上面有nginx的版本号会让别人攻击你的服务器 如图所示 第一种方法是关…...
MySQL8超详细安装教程
MySQL的下载与安装 一、MySQL8下载 MySQL Community Server 社区版本,开源免费,自由下载,但不提供官方技术支持,适用于大多数普通用户。 MySQL Enterprise Edition 企业版本,需付费,不能在线下载&#x…...
【FPGA入门】第五篇、按键消抖
目录 第一部分、按键抖动现象 第二部分、消抖思路及代码 1、简单的按键消抖思路 2、实际按键消抖思路 3、实际按键消抖模块代码 第三部分、总结 第一部分、按键抖动现象 只要学习过单片机的都会知道,按键在按下去和松开的那个瞬间都存在抖动,在单片…...
【MySql】MySql的事务基础篇
文章目录 CURD加控制什么是事物为什么会出现事务事务的版本支持事务的提交方式 CURD加控制 模拟一个买票系统的场景如下所示: MySQL注定会被多个客户端进行访问的,这个是肯定的,存储的都是数据,数据在上层可能有一个线程在用&…...
docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接
题目:docker创建Ubuntu,Ubuntu创建桌面环境,本机使用VNC连接 文章目录 前言docker创建基于Ubuntu:20.04的容器使用ssh连接容器容器安装桌面环境本机电脑使用VNC连接测试用python来创建的ui能否显示坑参考 前言 为什么我想要用ubuntu的桌面环…...
理解redis的多线程和IO多路复用
参考资料 https://blog.csdn.net/TZ845195485/article/details/119745735 Redis单线程和多线程问题的背景 Redis里程碑版本迭代 Redis的单线程 主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取(socket读&a…...
iOS 开发 | 自定义不规则 label
把我之前发布在简书的博客搬运过来。 目录 场景思路具体实现1. 自定义一个继承自UILabel的IrregularLabel2. 在初始化方法中进行相应初始化和设置3. 在layoutSubviews方法中进行路径的设置 最终效果箭头 label 场景 最近 App 改版,以下是截取的部分 UI 设计图&…...
client-go的Indexer三部曲之三:源码阅读
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 《client-go的Indexer三部曲》全部链接 基本功能性能测试源码阅读 本篇概览 本文是《client-go的Indexer三部曲》系列的终篇,主要任务是阅读和…...
收件地址解析成 省+市+区+详细地址的形式
项目中的源代码在我的GitHub:https://github.com/weitw/address-analyzer 先看效果: 如上图,address数输入的地址,Address对象是解析后的地址。可以支持逆推上一级,且支持地址白话解析。 一、项目介绍 1、解析规则 …...
数据结构与算法基础(青岛大学-王卓)(5)
叮叮咚咚,新一期来袭,我还在吃桃子,吃桃子,吃桃子。。。串和python的字符串差不多,数组和广义表像是python的list 文章目录 串(string) - 字符串概念及术语串的类型定义存储结构(同线性表)串的模式匹配算法…...
微信小程序开发入门学习01-TDesign模板解读
目录 1 使用模板创建小程序2 app.json3 页面布局总结 原来我们使用微信开发者工具,比较困难的是前端框架的选择上,官方也没有提供一套框架供我们使用,最近开发者工具已经提供了一套前端框架,后续我们开发的效率会因为使用模板提高…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
elementUI点击浏览table所选行数据查看文档
项目场景: table按照要求特定的数据变成按钮可以点击 解决方案: <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
TJCTF 2025
还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...
