没有合适的资源?快使用搜索试试~ 我知道了~
首页JAVA实现内部网关协议RIP的模拟程序课程设计报告
一) 设计内容 采用Java等编程语言模拟实现内部网关协议RIP。 二) 设计要求 1) 掌握内部网关协议RIP的工作原理; 2) 模拟程序能够初始化网络拓扑结构,并生成每个路由器上的路由表。 3) 模拟可以模拟RIP协议的执行:定期根据网络拓扑结构的变化,更新每台路由器上的路由表。 4)可通过命令或操作(通过图形化界面),更改网络拓扑结构。 5) 在RIP协议的执行过程中,模拟程序能够输出指定路由器的路由表。路由表的数据结构为<目的网络,跳数,下一跳>。 图1 模拟网络的拓扑结构 三)说明 模拟程序涉及三类对象:网络、路由器和路由表。其中,模拟程序具有6个网络,网络中包含至少6台路由器,每台路由器拥有一个路由表。模拟程序主要有四个功能: 1、初始化网络拓扑、建立路由表、建立邻接关系、设置定期更新时间。 2、在执行的过程中,用户可以输入更改网络拓扑结构的命令/操作:网络加入、网络退出、路由器故障等。 3、根据网络拓扑结构的变化,RIP协议定期更新每台路由器中的路由表。 4、可以通过命令暂停模拟程序的执行,并输出当前状态下,指定路由器的路由表。
资源详情
资源评论
资源推荐

题目四 内部网关协议 RIP 的模拟程序
一、 需求分析:
a) 路由器(Router 类):记录路由表信息
b) 路由表(Information 类):记录每个路由器的路由表信息
c) 网络(Network 类):构建网络拓扑结构
i. 初始化路由表
ii. 初始化相邻路由器
d) 动态更新(Function 类):以各个操作更新路由表信息
i. Fun1:初始化网络拓扑
ii. Fun2:查看最新路由表信息
iii. Fun3:按 RIP 协议更新路由表(动态更新)
iv. Fun4:更新网络拓扑结构(网络加入、网络退出、路由器故障)
使用的网络拓扑结构

二、 概要设计:
a) 距离向量算法:
收到相邻路由器(地址 X)的一个 RIP 报文:
i. 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都修改为
X,并把所有“距离”字段的值加一。
ii. 对修改后的 RIP 报文中每个项目,重复以下步骤:
若项目中目的网络不在路由表中,则把该项目加到路由表中。
若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路
由表中的项目。
若收到项目中的距离小于路由表中的距离,则进行更新。
否则,什么都不做。
iii. 若 3 分钟还没收到相邻路由器的更新路由表,则把此相邻路由器记为不
可达路由器,即将距离置为 16。
iv. 返回

b) 存储结构:
i. 路由表信息:数组+链表(HashMap)
Key:路由器地址名称
Value:目的网络、距离、下一跳路由器
ii. 路由器信息:数组(ArrayList)
路由器地址名称、路由表信息(相邻路由器)
三、 详细设计:
(重点代码部分已标粗,满足任务书所有要求)
//router
类
import java.io.Serializable;
import java.util.List;
import java.util.Map;
//路由器
public class Router implements Serializable {
private String routerName; //路由器地址
private Map<String,Information> information;//路由器中路由表信息
private List<Router> nearRouter; //相邻路由器
public Router() {}
public Router(String routerName, Map<String, Information> information) {
this.routerName = routerName;
this.information = information;
public String getRouterName() {
return routerName;
public Map<String, Information> getInformation() {
return information;
public void setRouterName(String routerName) {
this.routerName = routerName;
public void setInformation(Map<String, Information> information) {
this.information = information;
public void setNearRouter(List<Router> nearRouter) {
this.nearRouter=nearRouter;
public List<Router> getNearRouter(){
return nearRouter;
@Override
public String toString() {
return "routerName: "+routerName+
"\ninformation:\n"+information.values();
}
}

//information
类
import java.io.Serializable;
//路由表中的信息
public class Information implements Serializable {
private String targetNetwork; //目的网络
private int distance; //距离
private String nextJumpRouter; //下一跳路由器
public Information() {}
@Override
public String toString() {
return "\n"+targetNetwork+
"\t"+distance+
"\t"+nextJumpRouter;
}
public void setTargetNetwork(String targetNetwork) {
this.targetNetwork = targetNetwork;
}
public void setDistance(int distance) {
this.distance = distance;
}
public void setNextJumpRouter(String nextJumpRouter) {
this.nextJumpRouter = nextJumpRouter;
}
public String getTargetNetwork() {
return targetNetwork;
}
public int getDistance() {
return distance;
}
public String getNextJumpRouter() {
return nextJumpRouter;
}
public Information(String targetNetwork, int distance, String nextJumpRouter) {
this.targetNetwork = targetNetwork;
this.distance = distance;
this.nextJumpRouter = nextJumpRouter;
}
}
//network
类
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
剩余15页未读,继续阅读



















魔幻数字
- 粉丝: 0
- 资源: 14
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助

会员权益专享
最新资源
- Xilinx SRIO详解.pptx
- Informatica PowerCenter 10.2 for Centos7.6安装配置说明.pdf
- 现代无线系统射频电路实用设计卷II 英文版.pdf
- 电子产品可靠性设计 自己讲课用的PPT,包括设计方案的可靠性选择,元器件的选择与使用,降额设计,热设计,余度设计,参数优化设计 和 失效分析等
- MPC5744P-DEV-KIT-REVE-QSG.pdf
- 通信原理课程设计报告(ASK FSK PSK Matlab仿真--数字调制技术的仿真实现及性能研究)
- ORIGIN7.0使用说明
- 在VMware Player 3.1.3下安装Redhat Linux详尽步骤
- python学生信息管理系统实现代码
- 西门子MES手册 13 OpcenterEXCR_PortalStudio1_81RB1.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0