精华内容
下载资源
问答
  • 一、RIP简介 RIP(Routing Information ...二、距离向量算法 1.距离(跳数)问题 (1)从一个路由器到直接连接的路由器距离定义为1 (2)从一个路由器到另一个非直接相连的路由器距离定义为所经过路由器的个数加.

    一、RIP简介

    RIP(Routing Information Protocol,路由信息协议) 是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即metric)来衡量到达目标地址的路由距离。

    二、距离向量算法

    1.距离(跳数)问题

    (1)从一个路由器到直接连接的路由器距离定义为1
    (2)从一个路由器到另一个非直接相连的路由器距离定义为所经过路由器的个数加一
    (3)距离也就是跳数,每经过一个路由器跳数就加一
    (4)RIP协议认为好的路由就是经过的路由器最少,距离最短(跳数最少)。而且不能在两个网络之间同时使用多条路由,也就是说哪怕还有一条高速(低时延)但路由器较多的路由,RIP也会选择路由器最少的路由。
    (5)因为RIP规定经过的路由器不能超过15个,距离超过16时认为不可达,所以RIP只适用于小型互联网

    2.路由表的建立

    路由器一开始工作的时候只知道相邻路由器的距离(定义为1),路由表为空,之后和相邻的路由器交换并更新路由信息,经过若干次更新后本自制网络中的所有路由器便都会知道任何一个网络的最短距离和下一跳路由器的地址。虽然路由器都拥有了整个自治系统的全局路由信息,但由于路由器位置不同所以他们的路由表自然也不同

    3.路由表更新

    具体更新不知道,请参考其他文章,写这篇文章的目的是期末考试要考下面这道题,俺不会做,查了半天查会了,具体做法为:

    两个路由表,有一个表中没有的直接写,下一跳相同的,更新接收到的路由信息;下一跳不相同,选距离短的更新。

    三、题目练习

    题目:假定网络中路由器B的路由表有以下项目:

     

    目的网络距离下一跳路由
    N17A
    N22C
    N68F
    N84E
    N94F


    现在B收到C发过来的路由信息

    目的网络距离
    N24
    N38
    N64
    N83
    N95


    求出路由器B更新后的路由表:


    答案:(计算方法即参考了上述路由表更新规则:两个路由表,有一个表中没有的直接写,下一跳相同的,更新接收到的路由信息;下一跳不相同,选距离短的更新。(这条规则简直了,太棒了!!)计算结果如下:)

     

    目的网络距离下一跳路由解释
    N17AC中没有N1的信息,不需要更新
    N25C下一跳相同,更新
    N39CB中没有N3的信息,添加用户
    N65CC中到N6的距离为4,小于B到N6的距离8,需更新
    N84E

    B、C到N8的距离相同,不更新

    N94FB到N9的距离为5,小于C到N9的距离5,不更新
    展开全文
  • 距离 下一跳路由 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更新后的路由表: 答案: 目的网络 ...

    题目:假定网络中路由器B的路由表有以下项目:

    目的网络距离下一跳路由
    N17A
    N22C
    N68F
    N84E
    N94F

    现在B收到C发过来的路由信息

    目的网络距离
    N24
    N38
    N64
    N83
    N95

    求出路由器B更新后的路由表:

    答案:

    目的网络距离下一跳路由解释
    N17AC中没有N1的信息,不需要更新
    N25C下一跳相同,更新
    N39CB中没有N3的信息,添加用户
    N65CC中到N6的距离为4,小于B到N6的距离8,需更新
    N84EB、C到N8的距离相同,不更新
    N94FB到N9的距离为4,小于C到N9的距离5,不更新
    展开全文
  • #include<iostream> #include<ctime> #include<algorithm> using namespace std; bool Rout[12];... Net() {//构造函数:初始距离为17不存在,且没有下一跳 d = 17; nextR = -1; } }; ...
    #include<iostream>
    #include<ctime>
    #include<algorithm>
    using namespace std;
    bool Rout[12];
    
    struct Net {
    	int d, nextR;
    	Net() {//构造函数:初始距离为17不存在,且没有下一跳
    		d = 17; nextR = -1;
    	}
    };
    struct Router {//路由表
    	Net net[16];//到网络net[i]的距离为net[i].d,下一跳为路由net[i].nextR
    	int time[16] = { 0 };//各网络更新时间(初始化为0)
    }R[12];
    
    void InitRouteTable() {//初始化路由表
    	for (int i = 1; i <= 10; i++) {//设定路由表1-10
    		R[i].net[i].d = R[i].net[i + 1].d = 1;//路由i到网i和网i+1距离为1
    		R[i].net[i].nextR = R[i].net[i + 1].nextR = -1;//且直连没有下一跳
    	}
    }
    void Merge(int x, int y,int Time) {//RIP路由表融合(Rx->Ry)
    	for (int i = 1; i <= 10; i++) {//将Rx和Ry的网络1-10分别比较
    		int dX = R[x].net[i].d, dY = R[y].net[i].d;
    		int nX = R[x].net[i].nextR, nY = R[y].net[i].nextR;
    		bool flag = false;//false-不需更新 true-更新
    		if (dX < 16 && dY == 17) flag = true;//①新的直接进来(Rx可达i,Ry不得达)
    		else if (nX != nY&&dX < dY) flag = true;//②下一跳不一样的,取短的进表(nextR不同,取d较小)
    		else if (nX == nY&&R[x].time[i] > R[y].time[i]) {//③下一跳一样的,要最新的(nextR相同,取time较大)
    			R[y].net[i].d = dX;
    			R[y].net[i].nextR = y;
    			R[y].time[i] = R[x].time[i];
    		}
    		if (flag) {//更新
    			R[y].net[i].d = dX + 1;
    			R[y].net[i].nextR = x;
    			R[y].time[i] = Time;
    		}
    		if (Time - R[y].time[i] > 6) {//若超过180秒未更新,则该路由项记为无效
    			R[y].net[i].d = 16;//距离不可达
    			R[y].net[i].nextR = -1;
    		}
    	}
    }
    void updata(int index,int Time) {//递归更新路由
    	if (index < 1 || index>10) return;//超出路由范围return
    	if (index < 10) {//向右传递更新
    		Merge(index, index + 1, Time);//RIP路由表融合
    		if (!Rout[index + 1]) {
    			Rout[index + 1] = true;//设置已更新过
    			updata(index + 1, Time);//更新相邻路由
    		}
    	}
    	if (index > 1) {//向左传递更新
    		Merge(index, index - 1, Time);//RIP路由表融合
    		if (!Rout[index - 1]) {
    			Rout[index - 1] = true;//设置已更新过
    			updata(index - 1, Time);//更新相邻路由
    		}
    	}
    }
    void print(int x) {//打印查询的路由表
    	bool flag = false;
    	for (int i = 1; i < 16; i++) {
    		if (R[x].net[i].d <= 16) {
    			if (!flag) {
    				flag = true;
    				cout << "路由表R" << x << "如下:" << endl << "网络号\t\t" << "距离\t\t" << "下一跳" << endl;
    			}
    			cout << i << "\t\t" << R[x].net[i].d << "\t\t";
    			if (R[x].net[i].nextR != -1 && R[x].net[i].nextR != x) cout << "R" << R[x].net[i].nextR << endl;
    			else cout << "—"<< endl;//直连或不可达
    		}
    	}
    	if (!flag) cout << "路由表R" << x << "为空!" << endl;
    	cout << endl;
    }
    void wait(int second) {//等待second秒后继续运行
    	clock_t end;
    	end = clock() + second*CLOCKS_PER_SEC;
    	while (clock() < end) NULL;
    }
    
    int main() {
    	int x, n;//临时存放路由表Rx和网络n
    	InitRouteTable();//初始化路由表
    	cout << "初始路由表情况如下所示:" << endl;
    	for (x = 1; x <= 10; x++) {
    		print(x);
    	}
    	cout << "路由表更新开始:" << endl;
    	for (int Time = 1; Time <= 10; Time++) {
    		cout << endl << "第" << Time << "次更新后:" << endl;
    		memset(Rout, 0, sizeof(Rout));//设置每个路由表只更新一次
    		updata(1, Time);//从R1开始更新路由表
    
    		cout << "输入想要查询的路由表Rx(1-10):(输入0退出查询)" << endl;
    		while (cin >> x&&x) {
    			if (x < 0 || x>10) cout << "路由器R" << x << "不存在!" << endl;
    			else print(x);//打印当前查询的路由表
    		}
    
    		cout << "输入因意外临时断开的路由Rx和网络n:(Rx=0表示此次不断网络)" << endl;
    		cin >> x >> n;
    		R[x].net[n].d = 16;//设置Rx->网络n不可达
    		R[x].net[n].nextR = x;//设置下一跳为自己
    		R[x].time[n] = Time + 1;//设置断开为最新变化
    		updata(x, Time);//若路由表变化,向所有相邻路由器发送更新报文
    
    		if (x != 0) {//若网络意外断开
    			cout << "断开后已立即更新相邻路由表,输入想要查询的路由表Rx(1-10):(输入0退出查询)" << endl;
    			while (cin >> x&&x) {
    				if (x < 0 || x>10) cout << "路由器R" << x << "不存在!" << endl;
    				else print(x);//打印当前查询的路由表
    			}
    		}
    		cout << "查询结束,30秒后更新......" << endl;
    		wait(3);//每30秒更新一次并查看(30秒略长修改为3秒)
    	}
    	return 0;
    }

     

    展开全文
  • RIP协议距离向量算法——路由表更新

    千次阅读 多人点赞 2020-07-03 13:20:16
    RIP协议距离向量算法——路由表更新 题目: 假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”): B的路由表 目的网络 距离 下一跳路由器 N1 7 A N2 2 ...

    RIP协议距离向量算法——路由表更新

    题目:

    假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”):

    B的路由表

    目的网络距离下一跳路由器
    N17A
    N22C
    N68F
    N84E
    N94F

    现在B收到从C发来的路由信息(这两列分别表示“目的网络”“距离”):

    B收到C发来的路由信息

    目的网络距离
    N24
    N38
    N64
    N83
    N95

    解决步骤:

    1.对新接收到的路由表进行更新,全部"距离"+1,且"下一跳路由器"都写成发送方路由器的名称(这里是C给B发的路由表,所以下一跳名称填C)

    B收到C发来的路由信息(新表)

    目的网络距离下一跳路由器
    N25C
    N39C
    N65C
    N84C
    N96C

    2.开始对比新表和B的路由表
    1.看目的网络
    如果是新的目的网络,则直接把对应的各项信息填入表中;如果是相同的目的网络("新表"和"B路由表"对比),继续下面步骤。
    2.看下一跳路由器
    相同的目的网络为前提,看下一跳路由器。如果下一跳路由器相同,就更新(用新表的)。如果下一跳路由器不同,继续下面步骤。
    3.看距离
    如果距离不同,谁距离短,选谁来更新;如果距离相同,不更新。

    路由器B更新后的路由表(答案)

    目的网络距离下一跳路由器说明
    N17A无新信息,不改变
    N25C相同的下一跳,更新
    N39C新的项目,添加进来
    N65C不同的下一跳,距离更短,更新
    N84E不同的下一跳,距离一样,不改变
    N94F不同的下一跳,距离更大,不改变
    展开全文
  • RIP协议距离向量算法(详解)

    万次阅读 多人点赞 2020-06-05 11:38:59
    RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。 RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。距离:通常为“跳数”...
  • 基于距离向量算法rip协议的实现,C++代码,运行环境VS2005
  • RIP是一种基于距离向量的分布式路由选择协议。每个路由器都要不断地仅与相邻的路由器交换路由表。路由表的主要信息就是:到某个网络的最短距离,以及经过的下一跳地址。这种更新算法又称为距离向量算法距离向量...
  • RIP距离向量算法

    千次阅读 2018-10-09 21:39:00
    为了找出最短距离,由此引出 距离向量算法——   距离向量算法 此算法的基础是 Bellman-Ford算法 ,这种算法的要点是:  设 X 是结点 A 到 B 的最短路径上的一个结点。若把路径 A到B 拆成两段路径 A到X 和...
  • RIP协议距离向量算法

    千次阅读 2020-08-06 19:31:31
    RIP(Routing Information Protocol,路由信息协议) 是一种内部网关协议(IGP),是一种动态路由选择...RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即metric)来衡量到达目标地址的路由距离
  • 路由选择协议可以得出路由表中的路由。 1.RIP:路由信息协议,一种分布式的基于距离(跳数)向量的路由选择协议。选择两个网络之间最小路由器(最短路由)的路由,属于分布式路由。...4.更新算法:距离向量算法
  • 计算机网络·通俗理解RIP协议距离向量算法计算)

    千次阅读 多人点赞 2021-05-04 14:52:15
    你能学到什么 一、什么是RIP协议 二、距离向量算法 一、什么是RIP协议 全称为路由信息协议,是一种分布式的基于距离向量的路由选择协议 最大的优点就是简单 仅和相邻路由器交换信息 路由器交换的信息是当前本路由器...
  • RIP协议距离向量算法实现(c++)

    千次阅读 2019-06-09 13:36:17
    模拟路由表示意图 核心: 新的直接进表 ...算法实现: #include<iostream> #include<fstream> #include<algorithm> #include<string> #include<vector> #include&l...
  • 一、RIP协议 二、RIP协议的报文格式 三、RIP协议的特点(RIP协议好消息传得快,坏消息传得慢) 四、距离向量算法
  • 内部网关RIP协议--距离向量算法

    千次阅读 2018-04-30 22:02:29
    对每一个相邻路由器发送过来的RIP报文,进行一下步骤:(1)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目,把下一跳字段中的地址都改为X,并把所有的距离字段的值加1(见解释1),每一个项目都有3...
  • 距离向量路由算法要求,每个结点都参与定期交换整个路由表,即把路由表传递给自己与之相连的结点。 首先,当前路由表的组成如下,<目的网络 N,跳数,下一跳地址> RIP算法执行步骤 从相邻的X路由器接收发送...
  • RIP协议距离向量算法RIP协议定义② RIP协议:交换对象、交换周期、交换内容③ 距离向量算法例题1例题2④ RIP协议的报文格式⑤ RIP协议:好消息传得快,坏消息传得慢三. OSPF协议与链路状态算法① OSPF协议定义...
  • 文章目录路由选择协议分类回顾RIP协议RIP协议注意事项RIP协议的报文格式(了解)RIP 协议特点距离向量算法距离向量法练习1距离向量法练习2总结思维导图OSPF协议与链路状态算法OSPF协议链路状态路由算法OSPF 区域OSPF ...
  • 基于距离向量算法的路由协议的实现
  • RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大的有点就是简单。   RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(因此,这是一组距离,即“距离...
  • RIP是指路由信息协议,基于距离向量算法;OSPF是指开放最短路径优先协议,基于链路状态算法。 D-V 算法中,每个节点只需要维护自身的距离向量,且只需要与自己相连的链路的状态,需要的存储空间小;而L- S 算法中...
  • RIP距离向量算法

    千次阅读 2017-02-06 10:26:15
    RIP协议采用距离向量算法,在实际使用中已经较少适用。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。RIP进程使用UDP的520端口来发送和接收...
  • 4.5.1 RIP协议距离向量算法 题目中是更新R6的路由表
  • 三十四、RIP协议距离向量算法

    千次阅读 2021-12-24 09:30:10
    文章目录1、RIP协议2、RIP协议中的“交换”机制3、距离向量算法4、RIP协议的报文格式THE END 1、RIP协议 \qquadRIP是一种基于距离向量的路由选择协议,是因特网的协议标准,最大的优点是简单。 \qquadRIP协议要求...
  • 一、路由选择协议分类、 二、RIP 协议、 三、RIP 协议 信息交换、 四、距离向量算法、 五、距离向量算法 计算示例、 六、距离向量算法 计算示例 2、
  • RIP距离向量算法 维护的是路由表 距离为超过15就是网络不可达 RIP协议只和相邻路由器交换信息 路由器交换的信息是自己的路由器 30s交换一次陆游信息 若干次更新实现收敛 距离向量算法 修改RIP网络,并且+1 如果...
  • 基于距离向量算法rip协议的实现,C++代码,运行环境visual studio2005
  • RIP协议距离向量算法--C++

    千次阅读 2013-01-17 17:42:14
    RIP协议距离向量算法--C++ #include#include#include#include#includeusing namespace std; //路由表中数据class Table{ public:string destination_id;int distance;string next_stop;}; //路由类...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,091
精华内容 2,036
关键字:

rip协议距离向量算法