计算机网络之路由表更新

1.解题思路

对新接收到的路由表进行更新,全部"距离"+1,且"下一跳路由器"都写成发送方路由器的名称。

开始对比新表和原来的路由表

1.看目的网络

如果是新的目的网络,则直接把对应的各项信息填入表中;如果是相同的目的网络,继续看下一跳路由器。

2.看下一跳路由器

如果下一跳路由器相同,就更新(用新表的)。如果下一跳路由器不同,继续看距离。

3.看距离

如果距离不同,谁距离短,选谁来更新;如果距离相同,不更新。

2.实例解析

B的路由表

目的网络

距离

下一跳路由器

N1

7

A

N2

2

C

N6

8

F

N8

4

E

N9

4

F

B收到C发来的路由信息

目的网络

距离

N2

4

N3

8

N6

4

N8

3

N9

5

B收到C发来的路由信息(新表,对新接收到的路由表进行更新,全部"距离"+1,且"下一跳路由器"都写成发送方路由器的名称)

目的网络

距离

下一跳路由器

N2

5

C

N3

9

C

N6

5

C

N8

4

C

N9

6

C

 路由器B更新后的路由表

目的网络

距离

下一跳路由器

解释说明

N1

7

A

无新信息,不改变

N2

5

C

相同的下一跳,更新

N3

9

C

新的目的网络,添加进来

N6

5

C

不同的下一跳,距离更短,更新

N8

4

E

不同的下一跳,距离一样,不改变

N9

4

F

不同的下一跳,距离更大,不改变

3.进阶训练

在假定网络中的路由器R1的路由表有如图1所示的项目,图1中三列分别表示目的网络、距离和下一跳路由器。现在R1收到从R2发来的路由信息如图2所示,图2中两列分别表示目的网络和距离。试求出路由器R1更新后的路由表(详细说明每一个步骤)。

R1的原路由表

目的网络

距离

下一跳

10.0.0.0

0

直接

30.0.0.0

7

R7

40.0.0.0

3

R2

45.0.0.0

4

R8

180.0.0.0

5

R2

190.0.0.0

10

R5

R2的广播报文

目的网络

距离

10.0.0.0

4

30.0.0.0

4

40.0.0.0

2

41.0.0.0

3

180.0.0.0

5

R2更新后的路由表

目的网络

距离

下一跳

10.0.0.0

5

R2

30.0.0.0

5

R2

40.0.0.0

3

R2

41.0.0.0

4

R2

180.0.0.0

6

R2

R1更新后的路由表

目的网络

距离

下一跳

解释说明

10.0.0.0

0

直接

不变

30.0.0.0

5

R2

下一跳不同,选距离短的

40.0.0.0

3

R2

下一跳相同,更新

41.0.0.0

4

R2

添加新的

45.0.0.0

4

R8

不变

180.0.0.0

6

R2

下一跳相同,无条件更新

190.0.0.0

10

R5

不变

 

在距离 - 向量路由协议(如 RIP )中,“下一跳相同,即使距离更长,也无条件更新” 主要基于以下原因:

1.路由信息的可靠性

当路由器从某个邻居(下一跳相同意味着从同一邻居获取信息 )收到路由更新时,认为该邻居提供的是它所掌握的最新、最准确的路由信息。邻居路由器基于自身的网络连接情况和计算得出距离值,即使新距离变长,也表示其网络状态发生了变化,可能存在链路开销调整等情况。接收路由器没有理由怀疑该邻居提供信息的可靠性,所以选择更新。

2.避免路由环路

若不进行更新,可能会造成路由不一致。例如,若网络中某条链路出现故障,导致通过某一下一跳的路径距离变长。如果接收路由器不接受该更新,仍然使用旧的距离信息,就可能继续向该路径转发数据包。而发送更新的邻居路由器已经更新了距离,不再向这条不可达路径转发。这样就可能导致数据包在网络中兜圈子,形成路由环路。更新路由表,能让所有路由器对网络拓扑的认知保持一致,减少路由环路出现的可能性。

4.真题实践

 

求R2的路由表,采用路由聚合技术 

首先对路由器R1的两个子网进行聚合网络

最后为153.14.5.0/24

接着对路由器R3的两个子网进行聚合网络

最后为194.17.20.0/23

R2的路由表

目的网络

下一跳

接口

153.14.5.0/24

153.14.3.2

S0

194.17.20.0/23

194.17.24.2

S1

194.17.20.128/25

直接

E0

 

### 计算机网络路由表更新解析 #### RIP协议下的路由表更新机制 距离向量算法是一种常用的内部网关协议(IGP),用于在网络中传播路由信息并更新各节点的路由表。当路由器接收到邻居发送的距离向量消息时,会依据特定规则计算新的路径成本,并决定是否更新自身的路由表。 以下是基于引用内容[^1]的一个典型例题及其解答: --- #### 例题分析 假设路由器A当前的路由表如下所示: | **目的网络** | **距离** | **下一跳路由器** | |---------------|----------|-------------------| | N1 | 2 | B | | N2 | 4 | C | | N3 | 7 | D | 此时,路由器A收到了来自C的消息,其内容为: | **目的网络** | **距离** | |---------------|----------| | N1 | 5 | | N2 | 3 | | N4 | 8 | 我们需要根据这些数据重新计算路由器A的路由表。 --- #### 路由表更新过程详解 按照RIP协议的规定,每条记录都需要经过以下逻辑判断: 1. 如果接收方未包含该目标网络,则将其加入到自己的路由表中; 2. 对于已存在的目标网络,如果通过新路径到达的成本更低,则替换原有记录; 3. 若无更优路径,则保持原状; 具体操作步骤如下: - 针对N1项:现有途径经B抵达所需代价为2单位长度小于间接绕道至C再前往所耗费之数即(5+1)=6因此无需变动此项设置仍维持现状。 - 关于N2部分:原先设定是从C出发耗费四步才能完成传输作业现在同样也是借由同一个中介者不过只需花费三个时间单元再加上一步便可达成整个行程总计下来等于四个周期正好相匹配所以不必做出任何调整动作继续沿用先前规划好的线路安排即可满足需求条件. - 至于新增加进来的一项——也就是通往地点N4的方向由于之前根本不存在这样的选项故而应当立即把它补充进去形成完整的表格结构以便后续能够正常运作不受影响最终得到的结果应该是这样子呈现出来的样子: | **目的网络** | **距离** | **下一跳路由器** | |---------------|----------|-------------------| | N1 | 2 | B | | N2 | 4 | C | | N3 | 7 | D | | N4 | 9 | C | 上述变化反映了最新的拓扑关系状态同时也体现了动态适应环境改变的能力特点. --- #### 路由聚合概念引入 为了提高效率减少冗余信息量还可以采用一种叫做CIDR的技术手段来进行处理就是把那些具有相似特征属性的一组IP地址集合起来统一管理只需要保留其中最具代表性的几个关键数值就可以了其余则省略掉从而达到简化表达形式的目的这样做不仅可以让整体看起来更加简洁明了而且还能有效降低存储空间占用率提升查询速度加快响应时效等方面都带来了显著的好处效果明显可见一斑[^2]. ```python def update_routing_table(current_table, received_info): updated_table = [] for entry in current_table: network = entry['network'] distance = entry['distance'] next_hop = entry['next_hop'] found_in_received = False for info in received_info: if info['network'] == network and (info['distance'] + 1) < distance: distance = info['distance'] + 1 next_hop = 'C' found_in_received = True if not found_in_received: for new_network in received_info: if new_network['network'] != network: updated_table.append({ 'network': new_network['network'], 'distance': new_network['distance'] + 1, 'next_hop': 'C' }) updated_table.append({'network': network, 'distance': distance, 'next_hop': next_hop}) return updated_table current_table = [{'network':'N1', 'distance':2, 'next_hop':'B'}, {'network':'N2', 'distance':4, 'next_hop':'C'}, {'network':'N3', 'distance':7, 'next_hop':'D'}] received_info = [{'network':'N1', 'distance':5}, {'network':'N2', 'distance':3}, {'network':'N4', 'distance':8}] print(update_routing_table(current_table, received_info)) ``` --- #### 总结 本案例展示了如何利用RIP协议实现基本的路由表更新功能以及介绍了有关路由聚合的基础理论知识两者结合起来可以帮助我们更好地理解和掌握计算机网络领域内的核心原理和技术要点为进一步深入学习打下坚实基础[^3].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值