距离向量算法

路由:
1、数据包从源地址到目的地址所经过的路径,由一系列路由结点组成。
2、某个路由结点为数据报选择投递方向的选路过程。

路由结点:
一个具有路由能力的主机或路由器,它维护一张路由表,通过查询路由表来决定向哪个接口接口发送数据包。

接口:路由结点与某个网络相连的网卡接口。

路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接口发送,其中最后一条是缺省路由条目。

路由条目:路由表中的每一行,每个条目主要由网络地址,子网掩码,下一跳地址,发送接口组成,如果要发送的数据包的目的网络地址匹配路由表中的某一行,就按规定的接口发送到下一跳地址。

缺省路由条目:
路由表中的最后一行,主要由下一跳地址和发送接口主城,当目的地址与路由表中其他行都匹配不上时,就按缺省路由条目规定的接口发送到下一跳地址。

假设某主机上的网络接口配置和路由表如下:
距离向量算法_第1张图片
Destination:表示目的网络的地址。
Gateway:下一跳的地址。
Genmask:表示子网掩码。
Flags:U表示此条目有效,G表示此条目的下一跳地址是某个路由器的地址。没有G标志的条目表示目的网络地址是与本机接口直接相连的网络,不必经过经过路由转发,因此下一跳的地址是*号。
Iface:发送接口。

路由表的建立:
路由表中最主要的信息就是:到某个网络的距离(即最短距离),以及经过的下一条地址。路由表更新的原则是找到每个目的网络的最短距离,所以这种更新算法又叫做距离向量算法。注意这里的距离指的是”跳数”。
路由表基本表项如图:
这里写图片描述

距离向量算法:
距离向量算法_第2张图片
每一个相邻路由器发送过来的路由表都要经过以下步骤:
1、对地址为X的 路由器发过来的路由表,先修改此路由表中的所有项目:把”下一跳”字段中的地址改为X,并把所有”距离”字段都加1。
2、对修改后的路由表 中的每一个项目,进行以下步骤:
2.1、将X的路由表(修改过的),与S的路由表的目的网络进行对比。
若在X中出现,在S中没出现,则将X路由表中的这一条项目添加到S的路由表中。
2.2、对于目的网络在S和X路由表中都有的项目进行下面步骤
2.2.1、在S的路由表中,若下一跳地址是x
则直接用X路由表中这条项目替换S路由表中的项目。
2.2.2、在S的路由表中,若下一跳地址不是x
若X路由表项目中的距离d小于S路由表中的距离,则进行更新。
3、若3分钟还没有收到相邻路由器的更新表,则把此相邻路由器记为不可到达路由器,即把距离设置为16。

你可能感兴趣的:(网络,c/c++基础)