计算机网络路由器查表过程模拟课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

滁州学院

课程设计报告

课程名称:计算机网络

设计题目:路由器查表过程模拟

院部:计算机与信息工程学院

专业:计算机科学与技术

组别:第六组

起止日期: 2012年12月29日~ 2012 年1月4 日****:***

计算机与信息工程学院二○一二年制

课程设计任务书

目录

1引言 (3)

2 需求分析 (4)

2.1课程设计题目 (4)

2.2课程设计任务及要求 (4)

3 基础知识 (4)

3.1路由表 (4)

3.2路由表的组成 (4)

3.3路由器查询过程 (4)

4详细设计 (5)

4.1程序流程框图 (5)

4.2程序代码解释 (5)

5调试操作与说明 (8)

5.1路由表输出 (8)

6课程设计总结与体会 (9)

7参考文献 (10)

8附录 (10)

1 引言

随着计算机信息技术的发展,大规模的互联网逐渐流行起来也为路由器的发展提供了良好的基础和平台。作为不同网络之间互相连接的枢纽,路由器系统构成了基于TCP/IP 的国际互联网络Internet 的主体脉络。然而如何准确的发送并接受信息则需要通过路由表的准确查找路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。通过路由表查找过程的设计与模拟可以更好的体现路由的选择,帮助我们准确的理解路由的选择过程。

2 需求分析

2.1 课程设计题目

路由器查表过程模拟

2.2课程设计任务及要求

编程模拟路由器查找路由表的过程,用(目的地址掩码下一跳)的IP路由表以及目的地址作为输入,为目的地址查找路由表,找出正确的下一跳并输出结果。

3 基础知识

3.1 路由表

在现代路由器构造中,路由器不直接参与数据包的传输,而是用于生成一个小型指向表,这个指向表仅仅包含由路由算法选择的数据包传输优先路径,这个表格通常为了优化硬件存储和查找而被压缩或提前编译。本文将忽略这个执行的详细情况而选择整个路径选择/传输信息子系统作为路由表来说明。

3.2路由表的组成

由网络目标、网络掩码、网络地址、接口、跃点数构成。

3.3路由器查询过程

主机H1向H2发送的分组的目的地址是H2的IP地址128.30.33.138.主机H1首先要进行的操作是把本子网的“子网掩码255.255.255.128”与H2的“IP地址128.30.33.138”逐位相“与”,得出128.30.33.128,它不等于H1的网络地址(128.30.33.0)。这说明H2与H1不在同一个子网上。因此H1不能把分组直接交付给H2,而必须交给子网上的默认路由器R1,由R1来转发。

路由器R1在收到一个分组后,先由路由表中的第一行,看看这一行的网络地址和收到的分组的网络地址是否匹配。因为并不知道收到的分组的网络地址,因此只能试试看。这就是用这一行(子网1)的“子网掩码255.255.255.128”和收到的分组的“目的地址128.30.33.138”逐位相“与”,得出128.30.33.128.然后和这一行给出的目的网络地址进行比较。但现在比较的结果是不一致(即不匹配)。

用同样方法继续往下找第二行。用第二行的“子网掩码255.255.255.128”和该分组的“目的地址128.30.33.138”逐位相“与”,结果也是128.30.33.128。但这个结果和第二行的目的网络地址相匹配,说明这个网络(子网2)就是收到的分组所要寻找的目的网络。于是不需要找下一个路由器进行间接支付了,R1把分组从接口1直接交付给主机H2(它们都在一个自网上)。

4详细设计

4.1 程序流程框图

图4-1程序流程框

4.2程序代码解释

⑴路由表输入文件:将路由表手动输入到luyou.txt文件夹中,在luyou.java中使用

FileReader,BufferedReader等类读取文件中的路由表。路由表及读取文件中路由表的代码如:

FileReader fr=new FileReader("c:\\luyou.txt");

BufferedReader br=new BufferedReader(fr);

while((ch=br.readLine())!=null){ //读取文件luyou.txt中的路由表

System.out.println(ch);

}

fr.close();

br.close();

⑵存储文件中路由表的目的网络地址将及子网掩码:文件中路由表的目的网络地址存储在二维数组a中,其中a[i][j]代表路由表第i+1行目的网络地址第j+1段八位二进制数的十进制数,子网掩码存储在二维数组b中,其中b[i][j]代表路由表第i+1行子网掩码第j+1段八位二进制数的十进制数。并将本子网网络地址存储在一维c中,c[i]代表本子网网络地址第i+1段八位二进制数的十进制数,本子网子网掩码存储在一维数组d中,d[i]代表本子网子网掩码第i+1段八位二进制数的十进制数。存储代码如下:

int[][] a={{128,30,33,0},{128,30,33,128},{128,30,36,0}};

int[][] b={{255,255,255,128},{255,255,255,128},{255,255,255,0}};

int[] c={128,30,33,0};

int[] d={255,255,255,128};

⑶目的地址的输入及路由器查询路由表:从键盘输入目的网络地址,存储在数组f 中,f[i]代表目的地址第i+1段八位二进制数的十进制数。先将数组f中的数据分别与数组d中的数据进行与运算,判断每个d[i]&f[i]是否等于c[i],如果最后i等于4则说明与运算的每个结果均与数组c中的数据相等,即结果与本子网网络地址相等,输出结果。否则将d[0][j]与f[i]进行与运算,判断每个d[0][j]&f[i]是否等于a[0][j],如果最后j等于4则说明与运算的每个结果均与数组a[0][j]中的数据相等。否则将d[1][j]与f[i]进行与运算,判断每个d[1][j]&f[i]是否等于a[1][j],如果最后j等于4则说明与运算的每个结果

相关文档
最新文档