RIP路由协议的更新(电子科技大学TCP/IP第二次实验)

news2024/9/25 11:10:41

一.实验目的

1、掌握 RIP 协议在路由更新时的发送信息和发送方式

2、掌握 RIP 协议的路由更新算法

二.预备知识

1、静态路由选择和动态路由选择

2、内部网关协议和外部网关协议

3、距离向量路由选择

三.实验原理

RIP 协议(RFC 1058)是一个基于距离向量路由选择的内部网关协议:每台路由器定期与邻居路由器交换各自路由表中的所有路由信息,使用Bellman-Ford 算法计算路由表。RIP 协议的路由度量(Metric)是到目的网络的跳数(hop count),最大跳数值为 15。

运行RIP 协议的路由器初始接入到网络上时,它的路由表中只有根据其接口上的 IP 配置信息获得的直连网络的直连路由。随着 RIP 路由信息的不断交换,互联网中的每台RIP 路由器最终会掌握整个互联网的知识,即 RIP 协议收敛。

RIP 协议有 2 种类型的报文:RIP 请求报文和RIP 响应报文,它们都封装在 UDP 数据报中广播发送。

RIP 请求报文可以询问特定路由项目或所有路由项目。当运行 RIP 协议的路由器刚接入网络中时,会广播发送一份询问所有路由项目的 RIP 请求报文。

RIP 响应报文可以是询问或非询问的。询问的 RIP 响应报文仅在回应RIP 请求报文时单播发送给请求者,发送的内容是请求报文中所请求的特定路由项目或整个路由表的路由项目。非询问的 RIP 响应报文则是定期的广播发送,发送的内容是整个路由表中的路由项目。RIP 响应报文中携带的RIP 路由通告信息只有目的网络地址和跳数值。

RIP 协议使用 3 个计时器来支持 RIP 协议的操作。

定期计时器(30 秒)控制定期的 RIP 路由通告,但为了避免出现整个互联网中的路由器同时更新而引起的过载问题,实际实现中路由器的 RIP 路由通告间隔通常是 25~35 之间的一个随机数。

截止期计时器(180 秒)管理 RIP 路由的有效性,路由器每次收到一条RIP 路由的更新信息,就复位该路由的截止期计时器。如果一条 RIP 路由的截止期计时器期满,则将该路由标记为无效,即将其跳数设置为 16,表示该路由的目的不可达。

路由器收到邻居通告的一条无效路由,或因为截至计时器期满而产生一条无效路由时,并不立即从路由表中清除无效路由,而是为该无效路由启动一个无用信息收集计时器(120 秒),并继续在定期的路由通告中通告跳数为 16 的无效路由。仅当无效路由的无用信息收集计时器期满时才将其清除。无用信息收集计时器使得邻居路由器能够获知某条路由是无效的。

RIP 协议存在缓慢收敛和不稳定的问题。为了解决这些问题,RIP 协议中采用了触发更新和水平分割方法。

触发更新是当网络有变化时,路由器立即发送更新信息;如果网络没有变化,则仍是定期发送更新信息。触发更新不会影响路由器的RIP 定期计时器。

水平分割是在发送路由信息时,路由器根据发送接口选择发送路由表中的路由信息,简单的说就是从某个接口收到的路由信息不能再从该接口发送出去。

四.实验内容

五.实验步骤

实验步骤详见TCP//IP实验指导书。由于步骤过长,就在此不在赘述。

六、实验数据及结果分析

1、步骤 2 中根据R1 路由表中的哪些信息可以确保实验网中的RIP 协议已经收敛? 为什么?

答:

1.连续多次输入show ip route路由命令之后,R1的路由表项不再发生变化。而且路由表项数量和拓扑中网络数量一致且没有差错。

2. 根据路由表中到达子网3的跳数,RIP路由算法收敛之后,到达子网3的条数应该为2

2、汇总 3 个子网上捕获的 RIP 报文。按照报文的捕获顺序,分阶段分析记录每个子网中每台路由器在两次拓扑变化(第 1 次拓扑变化:图 A到图B,第 2 次拓扑变化:图B到图 A)过程中发出的RIP 报文信息:

阶段 1:第 1 次拓扑变化开始前(RIP 已收敛)的 2 个周期的RIP 报文;

阶段 2:第 1 次拓扑变化时RIP 收敛过程中的所有 RIP 报文;

阶段 3:第 1 次拓扑变化时RIP 完成收敛后的 2 个周期的RIP 报文;

阶段 4:第 2 次拓扑变化时RIP 收敛过程中的所有 RIP 报文;

阶段 5:第 2 次拓扑变化时RIP 完成收敛后的 2 个周期的RIP 报文。

子网1:路由器R1

IP 分组首部

UDP数据包首部

源IP

172.16.1.1

目的IP

255.255.255.255

源端口

520

目的端口

520

RIP报文

阶段

命令

路由信息项1

路由信息项2

捕获时间

网络地址

跳数

网络地址

跳数

1

Response

172.16.2.0

1

172.16.3.0

2

18:26:04

Response

172.16.2.0

1

172.16.3.0

2

18:26:33

2

Response

172.16.2.0

16

172.16.3.0

16

18:34:52

Response

172.16.2.0

16

172.16.3.0

16

18:35:16

Response

172.16.2.0

16

172.16.3.0

16

18:35:43

3

-

-

-

-

-

-

4

Response

172.16.2.0

1

172.16.3.0

2

18:43:23

5

Response

172.16.2.0

1

172.16.3.0

2

18:43:38

Response

172.16.2.0

1

172.16.3.0

2

18:44:05

子网2:路由器R1

IP 分组首部

UDP数据包首部

源IP

172.16.2.1

目的IP

255.255.255.255

源端口

520

目的端口

520

RIP报文

阶段

命令

路由信息项1

路由信息项2

捕获时间

网络地址

跳数

网络地址

跳数

1

Response

172.16.1.0

1

-

-

18:26:33

Response

172.16.1.0

1

-

-

18:27:00

2

-

-

-

-

-

-

3

-

-

-

-

-

-

4

Request

Not specified

16

-

-

18:43:21

Response

172.16.1.0

1

-

-

18:43:38

5

Response

172.16.1.0

1

-

-

18:44:05

Response

172.16.1.0

1

-

-

18:44:32

子网2:路由器R2

IP 分组首部

UDP数据包首部

源IP

172.16.2.2

目的IP

255.255.255.255

源端口

520

目的端口

520

RIP报文

阶段

命令

路由信息项1

路由信息项2

捕获时间

网络地址

跳数

网络地址

跳数

1

Response

172.16.3.0

1

-

-

18:26:44

Response

172.16.3.0

1

-

-

18:27:13

2

Response

172.16.3.0

1

-

-

18:35:02

Response

172.16.3.0

1

-

-

18:35:31

Response

172.16.3.0

1

-

-

18:36:00

Response

172.16.3.0

1

-

-

18:36:30

Response

172.16.3.0

1

-

-

18:36:57

Response

172.16.3.0

1

-

-

18:37:24

Response

172.16.1.0

16

172.16.3.0

1

18:37:50

Response

172.16.1.0

16

-

-

18:37:52

Response

172.16.1.0

16

172.16.3.0

1

18:38:20

3

Response

172.16.3.0

1

-

-

18:38:49

Response

172.16.3.0

1

-

-

18:39:17

4

Response

172.16.3.0

1

-

-

18:43:21

Response

172.16.3.0

1

-

-

18:43:56

5

Response

172.16.3.0

1

-

-

18:44:05

Response

172.16.3.0

1

-

-

18:44:32

子网3:路由器R2

IP 分组首部

UDP数据包首部

源IP

172.16.3.2

目的IP

255.255.255.255

源端口

520

目的端口

520

RIP报文

阶段

命令

路由信息项1

路由信息项2

捕获时间

网络地址

跳数

网络地址

跳数

1

Response

172.16.1.0

2

172.16.2.0

1

18:34:06

Response

172.16.1.0

2

172.16.2.0

1

18:34:34

2

Response

172.16.1.0

2

172.16.2.0

1

18:35:02

Response

172.16.1.0

2

172.16.2.0

1

18:35:31

Response

172.16.1.0

2

172.16.2.0

1

18:36:00

Response

172.16.1.0

2

172.16.2.0

1

18:36:30

Response

172.16.1.0

2

172.16.2.0

1

18:36:57

Response

172.16.1.0

2

172.16.2.0

1

18:37:24

Response

172.16.1.0

16

172.16.2.0

1

18:37:50

Response

172.16.1.0

16

-

-

18:37:52

Response

172.16.1.0

16

172.16.2.0

1

18:38:20

3

Response

-

-

172.16.2.0

1

18:38:49

Response

-

-

172.16.2.0

1

18:39:17

4

Response

172.16.1.0

2

-

-

18:43:40

Response

172.16.1.0

2

172.16.2.0

1

18:43:56

5

Response

172.16.1.0

2

172.16.2.0

1

18:44:23

Response

172.16.1.0

2

172.16.2.0

1

18:44:52

子网3:路由器R3

IP 分组首部

UDP数据包首部

源IP

172.16.3.3

目的IP

255.255.255.255

源端口

520

目的端口

520

RIP报文

阶段

命令

路由信息项1

路由信息项2

捕获时间

网络地址

跳数

网络地址

跳数

1

-

-

-

-

-

-

2

Response

172.16.1.0

16

-

-

18:37:52

Response

172.16.1.0

16

-

-

18:38:16

Response

172.16.1.0

16

-

-

18:38:43

3

-

-

-

-

-

-

4

-

-

-

-

-

-

5

-

-

-

-

-

-

3、RIP 计时器分析:

-在本实验中,RIP 的定期计时器、截止期计时器和无用信息收集计数器实际上是多少秒?

在本实验当中,RIP的定期计时器是25~30秒之间的一个随机的值,截止期计时器是180秒,无用信息收集计数器是120秒。

-为什么定期计时器并不是RFC 中规定的固定值,而是一个时间范围内的随机值?

避免整个互联网内同一时间所有路由器同时更新造成过载的问题。

4、阶段 1 分析:

-该阶段中为什么在子网 3 上捕获不到路由器R3 的 RIP 报文?

因为启用了水平分割,从某个接口接收到的更新信息不允许再从这个接口发回去。R3上的路由信息都是从路由器172.16.3.3的接口上获取的,所以不会再从这个接口上转发出去,在子网3内就不会捕获到路由器R3的报文。

5、阶段 2 分析:

-分析子网 1 中路由器 R1 的 RIP 报文信息记录,根据哪一个 RIP 报文,可以推断出 R1 大约何时断开与子网 2 的连接的?为什么?

本人根据wireshark抓包获取的74号RIP报文,断开时间大概为18点34分52秒,绝对时间是528.375000秒。

原因此时R1在子网1内广播通告子网2,子网3都不可达,而且与上一条RIP报文的时间相差不到1s,说明是引起了触发更新,所以可以推断此时R1与子网2断开了连接。

-该阶段中记录的哪些 RIP 报文是触发更新报文?是如何推断出来的?

触发更新报文:R1在子网1中发送的74号报文,R2在子网2中发送的165号报文,R2在子网3中发送的158号的RIP报文,R3在子网3发送的159号报文。

推断的原因 1.与前一个周期性报文相差的时间为0-2s,小于25秒,并且仅仅通告发生故障的链路

2.在同一个子网内两个路由器通报的触发更新报文的时间应该相近,报文的序号也应该接近

-产生这些触发更新报文的原因分别是什么?

R1在子网1发送触发更新报文的原因是:R1与子网2断开连接,造成路由表项没有跟新,因此在子网1内通告子网2,子网3 不可达的信息。

R2在子网2和子网3发送触发更新报文的原因:R2路由表项中目的地址是子网1的路由表项超过截止期计时器时间,然后R2更新自己的路由表项子网1不可达跳数变为16,并向子网2和子网3内进行通告子网1不可达。

R3在子网3发送触发更新报文的原因:R3收到R2发送的子网1不可达的报文信息,进行更新自己的路由表项,并向子网3内通告子网1断开连接,不可达。

-RIP 的触发更新报文和定时更新报文在通告的路由信息数量上有何不同?

RIP的触发更新报文仅通告有变化的路由信息,而定时更新报文通告路由表中所有的信息除了因水平分割被过滤掉的路由表项信息

6、阶段 3 分析:

-路由器 R1、R2 和R3 在第 1 次拓扑改变时的RIP 收敛时间大概分别是多少秒钟?整个网络的RIP 收敛时间是多少秒钟?

R1在第一次改变拓扑之后的收敛时间约为60秒,R2和R3的收敛时间约为240秒。

整个网络的收敛时间为240秒。

-为什么 R1 对网络拓扑变化的更新时间要明显短于R2 和 R3?

因为R1与子网2断开之后,由于R1和子网2是直连的,R1立马可以检测到链路断开,因此R1的更新收敛时间就应该是无效路由信息更新的时间。而R2需要等待截止期计时器180秒之后确定路由表项过期之后,才能知道子网1不可达,之后会立刻产生一个触发更新报文通知R3而R3收到通知之后产生触发更新报文的时间和R2很接近。所以R1对网络拓扑变化的更新时间要明显短于R2 和 R3。

-该阶段中为什么在子网 1 中捕获不到路由器R1 的 RIP 报文?

水平分割。因为此时R1只连接了子网1,根据水平分割,从某个接口接收到的更新信息不允许再从这个接口发回去,所以在子网1内不会收到R1的RIP报文。

7、阶段 4 分析:

-分析子网 2 中路由器 R1 的 RIP 报文信息记录,根据哪一个 RIP 报文,可以推断出 R1 大约何时恢复与子网C 的连接的?为什么?

根据R1在子网2中于18:43:21721321发送的报文,可以推断出R1与子网2恢复了重连。

原因:此时路由器R1在子网2广播发出了Requset,路由器刚刚接入到一个子网的时候,它会在这个子网上发送一个询问所有路由信息的RIP请求报文。

-该阶段中记录的哪些 RIP 报文是触发更新报文?

R1在子网1上于18:43:23发送的128号RIP报文

R1在子网2上于18:43:38发送的217号RIP报文

R2在子网3上于18:43:40发送的244号RIP报文

-产生这些触发更新报文的原因分别是什么?

R1在子网1与子网2上发送触发更新报文的原因是:R1与子网2恢复连接之后即在子网2上发送请求所有路由信息的request的RIP报文。在收到邻居R2的响应报文之后,R1就在子网1中通告子网2和子网3路由的触发更新信息,并在子网2上通告子网1的触发更新信息。

R2在子网3上发送触发更新报文的原因是:R2收到R1通告的子网1路由的触发更新信息之后,更新自己的路由表,并在子网3上通告子网1的路由的触发更新信息。

-该阶段中为什么路由器R2会在子网2上发送单播和广播这两种RIP响应的分组?

发送单播RIP响应分组的原因是:R1向子网2内发送广播分组,R2对R1单播响应。

发送广播RIP响应分组的原因是:是RIP的周期性响应报文,是R2周期性的向子网2广播子网3的路由信息。

8、阶段 5 分析:

-路由器R1、R2 和R3 在第2 次拓扑改变时的RIP 收敛时间分别是多少秒钟? 整个网络的 RIP 收敛时间是多少秒钟?

R1在第二次拓扑改变期间时RIP的收敛时间大概是2秒,R2与R3在第二次拓扑发生变化时收敛时间大概分别22,24秒。整个网络的RIP收敛时间大概是24秒。

-比较 2 次拓扑变化时 RIP 的收敛时间,分析 RIP 协议对好消息(网络可达) 和坏消息(网络不可达)的传递哪一种更快?并分析产生这种现象的原因。

好消息的传递速度更快。

原因:对于坏消息的传播如果是直连网络会立即发现网络不可达,但是对于非直连的路由器需要等待180秒的截止计时器的时间直到路由表项过期,并且对路由表项进行无用信息收集计时器更新,而对好消息没有任何计时器的限制,直接进行触发更新。

综上,所以好消息的传递要快于坏消息。

七、实验结论

1、总结 RIP 协议的路由通告机制,即路由器何时发送 RIP 路由通告?发送哪些

内容?发送方式?

说明:询问响应不是路由通告机制。

通告类型

何时发送 RIP 路由通告

发送哪些内容

发送方式

定期更新

路由器每隔25~30秒(随机

向自己的每个端口发送出除水平分割之外的其他所有的路由表项

广播

触发更新

①网络发生变化时

截止期计时器到期没有收到RIP路由通告

对特定变化的路由表项进行发送

广播

  1. 总结 RIP 协议的路由更新算法,即路由器收到 RIP 响应报文后,如何更新自己的路由表?
  1. 首先检查RIP响应报文的有效性(检查端口,源IP地址)
  2. 然后处理RIP报文的信息:
  1. 先忽略非法的度量,地址和无用的区域
  2. 度量metric=min(metric+1,16)
  3. If 目的网络地址不在路由表里面就添加上这一条路由表项

     Else if 路由表中对应表项的下一跳和RIP报文的源IP相同,就将这一个路由表项替换掉。

     Esle if 收到报文里面的metric+1之后比原来路由表项里面的metric还小就进行更新这一条路由表项。

写成流程图如下:

 

3、总结 RIP 协议的 3 个计时器的工作原理:计时对象?何时启动?何时复位?何时终止?期满时对计时对象的处理?

(1)定期计时器:计时的对象是启动定期计时器的路由器。路由器启动就启动了定期计时器,定期计时器每隔25~35秒复位一次。只要路由器没有宕机,不会终止(或者说是到达设定时间之后)期满时的动作是通告自己的整个路由表。

(2)截止期计时器:计时的对象是1条RIP路由。启动时间是新的RIP路由表项被添加的时候。当收到这条路由变化更新的时候,进行复位,复位到180秒。期满时的动作为如果180秒之内没有收到更新的RIP路由信息,该路由就会被标记为过期,跳数变为16,同时终止截止期计时器。

(3)无用信息收集计时器:计时对象是跳数为16的路由表项,从某一路由表项变为16开始启动,不会自动进行复位,到达设定时间120秒后终止,期满时删除该路由表项。

八、总结及心得体会

1.通过本次实验,体会了整个RIP路由协议更新的整个过程,以及RIP协议的辅助触发更新和水平分割。

2.对距离矢量路由算法有了更加深入的认识。

3.对RIP的三个重要的计时器定期计时器、截止期计时器、无用信息收集计时器理解更深入了。

九、对本实验过程及方法、手段的改进建议

1.实验可以增加难度,相关RIP路由算法部分可以让学生们来进行实现。

2.相关实验报告可以增加模板,减少学生们这一部分的时间。

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

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

相关文章

使用Python进行数据分析——线性回归分析

大家好,线性回归是确定两种或两种以上变量之间互相依赖的定量关系的一种统计分析方法。根据自变量的个数,可以将线性回归分为一元线性回归和多元线性回归分析。一元线性回归:就是只包含一个自变量,且该自变量与因变量之间的关系是…

AMBA-AXI(一)burst 传输-INCR/WRAP/Fixed

💡Note:本文是根据AXI协议IHI0022F_b_amba_axi_protocol_spec.pdf(issue F)整理的。主要是分享AXI3.0和4.0部分。如果内容有问题请大家在评论区中指出,有补充或者疑问也可以发在评论区,互相学习&#x1f64…

JUC 体系的基石——AQS

—— AQS(AbstractQueuedSynchronizer) 概念 抽象队列同步器;volatile cas 机制实现的锁模板,保证了代码的同步性和可见性,而 AQS 封装了线程阻塞等待挂起,解锁唤醒其他线程的逻辑。AQS 子类只需要根据状…

182、【动态规划/数组】leetcode ——647. 回文子串:动态规划+双指针(C++版本)

题目描述 原题链接:647. 回文子串 解题思路 (1)动态规划 动态规划的思路是每次判定子串两端对称位置是否相等,然后再基于已有的内侧对称情况判定是否为回文串。 动态规划五步曲: (1)dp[i][…

语音识别与Python编程实践

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

uni-app入门并使用学习

笔记课程 工具准备 下载HBuilderX 点击下载HBuilderX 下载微信开发者工具 点击下载微信开发者工具 使用参考uni-app官网 官网 新建项目运行 文件---新建----项目 运行到谷歌浏览器H5 运行------谷歌浏览器打开---打开成功(第一次可能需要安装插件&#xff0…

React(三) ——新、旧生命周期

🧁个人主页:个人主页 ✌支持我 :点赞👍收藏🌼关注🧡 文章目录⛳React生命周期🌋初始化阶段👣运行中阶段🏓销毁阶段🏫新生命周期的替代🚚react中性…

MS9123是一款单芯片USB投屏器,内部集成了USB2 0控制器和数据收发模块、视频DAC和音视频处理模块,MS9123可以通过USB接口显示或者扩展PC、

MS9123是一款单芯片USB投屏器,内部集成了USB2.0控制器和数据收发模块、视频DAC和音视频处理模块,MS9123可以通过USB接口显示或者扩展PC、智能手机、平板电脑的显示信息到更大尺寸的显示设备上,支持CVBS、S-Video视频接口。 主要功能特征 C…

基本中型网络的仿真(RYU+Mininet的SDN架构)-以校园为例

目录 ​​​​​​​具体问题可以私聊博主 一、设计目标 1.1应用场景介绍 1.2应用场景设计要求 网络配置方式 网络技术要求 网络拓扑要求 互联互通 二、课程设计内容与原理 (1)预期网络拓扑结构和功能 (1)网络设备信息 …

aws ecr 使用golang实现的简单镜像转换工具

https://pkg.go.dev/github.com/docker/docker/client#section-readme 通过golang实现一个简单的镜像下载工具 总体步骤 启动一台海外区域的ec2实例安装docker和awscli配置凭证访问国内ecr仓库编写web服务实现镜像转换和自动推送 安装docker和awscli sudo yum remove awsc…

超市怎么做微信小程序_线上超市小程序开发可以实现什么功能呢

1。开发超市小程序有什么价值? 1、对于消费者来说:通过超市小程序能够更加直接的购买到想要的产品,消费者无需再到门店寻找商品可以直接通过超市小程序进行在线浏览;通过在线搜索的方式能够更加便捷的搜索到相应的商品&#xff0…

第一篇自我介绍(单片机)

小白的单片机之旅 🤔自我介绍🤔 😊学习目标😊 😜关于单片机😜 🌝小结🌝 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞&…

JavaSE学习笔记day14

二、Set Set集合是Collection集合的子接口,该集合中不能有重复元素!! Set集合提供的方法签名,与父接口Collection的方法完全一致!! 即没有关于下标操作的方法 Set接口,它有两个常用的子实现类HashSet,TreeSet 三、HashSet HashSet实现了Set接口,底层是hash表(实际上底层是HashM…

QML 中的 5 大布局

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 在 QML 中,可以通过多种方式对元素进行布局 - 手动定位、坐标绑定定位、锚定位(anchors)、定位器和布局管理器。 说到 anchors,可能很多人都不太了解,它是 QML 中一个非常重要的概念,主要提供了一种相…

C语言几种判断语句简述

C 判断 判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。 C 语言把任何非零和非空的值假定为 true,把零或 null 假定为 fals…

Vuex基础语法

Vuex vuex官网 文章目录Vuexvuex的工作原理图2.vuex的环境搭建3.vuex的使用1.actons2. mutations3.getters4.vuex中的map映射属性4.1 mapState和mapGetters4.2 mapMutations和mapActions5.vuex多组件通信1.通过计算属性获得2.通过mapState获得6.vuex模块化和命名空间6.1模块化…

为什么要用线程池?

1.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 2.提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 3.提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源&#…

王道《操作系统》学习(一)——计算机系统概述

1.1 操作系统的概念、功能 1.1.1 操作系统的概念(定义) (1)操作系统是系统资源的管理者 (2)向上层用户、软件提供方便易用的服务 (3)是最接近硬件的一层软件 1.1.2 操作系统的功能…

Java 输入输出流

应用程序经常需要访问文件和目录,读取文件信息或写入信息到文件,即从外界输入数据或者向外界传输数据,这些数据可以保存在磁盘文件、内存或其他程序中。在Java中,对这些数据的操作是通过 I/O 技术来实现的。所谓 I/O 技术&#xf…

Vue2.0开发之——使用ref引用DOM元素(40)

一 概述 什么是ref引用ref引用示例 二 什么是ref引用 ref用来辅助开发者在不依赖于jQuery的情况下,获取DOM元素或组件的引用每个vue的组件实例上,都包含一个$refs对象,里面存储着对应的DOM元素或组件的应用默认情况下,组件的$re…