计算机网络实验报告

上传人:第*** 文档编号:31528376 上传时间:2018-02-08 格式:DOC 页数:18 大小:679.06KB
返回 下载 相关 举报
计算机网络实验报告_第1页
第1页 / 共18页
计算机网络实验报告_第2页
第2页 / 共18页
计算机网络实验报告_第3页
第3页 / 共18页
计算机网络实验报告_第4页
第4页 / 共18页
计算机网络实验报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《计算机网络实验报告》由会员分享,可在线阅读,更多相关《计算机网络实验报告(18页珍藏版)》请在金锄头文库上搜索。

1、计算机网络学生姓名 学 号 专业班级 指导教师 王建新 学 院 信息科学与工程学院 完成时间 2014 年 5 月实 验 报 告实验一 网络路由层模拟协议 1实验目的与要求1.掌握 VB、VC+、VS 或 JAVA 等集成开发环境编写路由仿真程序的方法;2.理解并掌握距离向量路由协议和链路状态路由协议的工作原理。2实验内容与实现原理1.实验内容(1,2 任选其一实现)1.模拟距离向量路由算法的路由表交换过程,演示每轮交换后路由表的变化。基本要求(动态生成网络拓扑图,节点间的距离随机生成。从初始路由表开始,进行交换路由表,演示每轮交换后的路由表的变化。观察和讨论多少轮交换后路由表稳定)2.实现链

2、路状态路由算法的模拟。基本要求(动态生成网络拓扑图,节点间的距离随机生成。每个节点生成自己的链路状态分组,依据收到的链路状态表得到整体网络结构,在得到的整体网络结构上用最短路径算法,生成每个节点的路由表)进一步的要求:可以将模拟实验的每个节点程序部署在不同的电脑上,通过 socket 通信程序完成路由表信息或者链路状态分组的发送(与实验三结合) 。请用两台机器虚拟成多个网络节点(一台机器上开启多个通信进程,每个进程虚拟成一个节点) ,完成每个虚拟节点的路由表生成,进而按照路由表转发数据包。2.实现原理链路状态路由协议是目前使用最广的一类域内路由协议。它采用一种“拼图”的设计策略,即每个路由器将

3、它到其周围邻居的链路状态向全网的其他路由器进行广播。这样,一个路由器收到从网络中其他路由器发送过来的路由信息后,它对这些链路状态进行拼装,最终生成一个全网的拓扑视图,近而可以通过最短路径算法来计算它到别的路由器的最短路径。运行链路状态路由协议的路由器, 每台路由器公在其接口的状态发生变化时,才将变化后的状态发送给其他所有路由器,每台路由器都使用收到的信息重新计算前往每个网络的最佳路径,然后将这些信息存储到自己的路由选择表中。链路状态路由算法背后的思想非常简单,可以用 5 个基本步骤加以描述。1、发现他的邻接点,并知道其网络的地址。2、测量到各邻接点的延迟或开销。3、构造一个分组,分组中包含所有

4、他刚刚收到的信息。4、将这个分组发送给其他的路由器。5、计算出到每一个其他路由器的最短路径。例如,每个路由器运行 Dijkstra 算法就可以找从它到每一个其他路由器的最短路径。3实验具体设计实现及结果(含流程图及关键代码说明)5 2 64 12 3 4上图为实验截图所用的网络图,图中的每个节点代表一个路由器,每条边代表一条通信线路或链路。为了选择一对给定路由器之间的路由,算法只需要在图中找出它们之间的最短路径。流程图写入 增加 删除 修改 dijkstra 算法 以流的方式写入文件 展示 矩阵内存储的路由信息BC EDA选择功能创建路由表增加路由删除路由修改路由找两个路由间的最短路径保存路由

5、表到文件显示路由表信息退出初始化邻接矩阵输出界面(内容参见截图)下为功能展示截图:dijkstra 算法代码:void dijkstra(int s, int t, int path) /迪杰斯特拉算法 s 目的节点 t 源节点struct state /存放节点数据 int predecessor; /父节点 int length; /权值,存放最小权值 bool lable; /访问状态 false 未被访问过,true 访问过stateMAX_NODES;int i,k,min,print; struct state *p; for(p = p +) /初始化节点数据 p-predece

6、ssor = -1;/类似存下一跳p-length = INFINITY; /=100000p-lable = false;statet.length = 0; /源节点的权值改为 0statet.lable = true;k = t;cout ; statei.length = statek.length + distki; /路径长度总和k = 0; min = INFINITY;for( i = 0; i #include #define routeTable routeTable.txtusing namespace std;const int MAX_NODES = 1024; /能

7、接受的最大路由数const int INFINITY = 100000; /权值int distMAX_NODESMAX_NODES; /用于存放网络拓扑结构连接矩阵 int static Vnums; /总的节点(路由) 数 void initDist() /初始化邻接矩阵 for(int i = 0; i distij; void saveRoute(ofstream& routeTables) /6.保存路由信息 routeTables predecessor = -1;/类似存下一跳p-length = INFINITY; /=100000p-lable = false;statet.

8、length = 0; /源节点的权值改为 0statet.lable = true;k = t;cout ; statei.length = statek.length + distki; /路径长度总和k = 0; min = INFINITY;for( i = 0; i distVnums - 1j; /写入对应增加行的信息 distjVnums - 1 = distVnums - 1j; /写入对应增加列的信息 cout ch;if(ch = n) break;while(ch = y);void deleteRoute() /3.删除路由char ch;int delNum; doc

9、out delNum; for(int j = 0; j ch;if(ch = n) break;while(ch = y); void changeRoute() /4.修改路由int i,j;cout i;cout j;cout disti-1j-1; void displayRouteInfo() /7.显示路由表信息cout Vnums;do/主菜单界面cout change;switch(change)case 1: creatRouteMap(Vnums); system(pause); system(cls);break;case 2: addRoute(); system(pa

10、use); system(cls); break; case 3: deleteRoute(); system(pause); system(cls); break; case 4: changeRoute(); system(pause); system(cls);break;case 5: cout desNode;cin rouNode;dijkstra(desNode,rouNode,path); /求最短路径 system(pause);system(cls);break;case 6:routeTables.open(routeTable);if(routeTables=NULL)

11、cout ch;if(ch = n) break;while(ch = y);system(pause);return 0;实验二 Socket 通信实验一实验目的与要求1.掌握 VB、VC+、VS 或 JAVA 等集成开发环境编写网络程序的方法;2.掌握客户/服务器(C/S)应用的工作方式;3.学习网络中进程之间通信的原理和实现方法;4.理解单播、组播和广播的原理并比较其不同之处;5.要求本机既是客户端又是服务器端;二实验内容与实现原理1.实验内容所编写的程序应具有如下功能:1.具有点对点通信功能,任意客户端之间能够发送消息;2.具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员

12、不能收到;3.具有广播功能,客户端能够向所有其他成员广播消息;2.实现原理socket 非常类似于 电话插座。以一个国家级电话网为例,电话的通话双方相当于相互通信的 2 个进程,区号是它的网络地址;区内一个单位的交换机相当于一台主机,主机分配给每个用户的局内号码相当于 socket 号。任何用户在通话之前,首先要占有一部电话机,相当于申请一个 socket;同时要知道对方的号码,相当于对方有一个固定的 socket。然后向对方拨号呼叫,相当于发出连接请求(假如对方不在同一区内,还要拨对方区号,相当于给出网络地址) 。假如对方在场并空闲(相当于通信的另一主机开机且可以接受连接请求),拿起电话话筒

13、,双方就可以正式通话,相当于连接成功。双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向 socket 发送数据和从 socket 接收数据。通话结束后,一方挂起电话机相当于关闭 socket,撤消连接。在电话系统中,一般用户只能感受到本地电话机和对方电话号码的存在,建立通话的过程,话音传输的过程以及整个电话系统的技术细节对他都是透明的,这也与 socket 机制非常相似。socket 利用网间网通信设施实现进程通信,但它对通信设施的细节毫不关心,只要通信设施能提供足够的通信能力,它就满足了。至此,我们对 socket 进行了直观的描述。抽象出来,socket 实质上

14、提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。正如打电话之前,双方必须各自拥有一台电话机一样。在网间网内部,每一个socket 用一个半相关描述:(协议,本地地址,本地端口)一个完整的 socket 有一个本地唯一的 socket 号,由操作系统分配。最重要的是,socket 是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的 socket 系统调用 。客户随机申请一个 socket (相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫) ,系统为之分配一个 socket 号;服务器拥有全局公认的 socket ,任何客户都可以向它发出连接请求和信息请求(相当于一个被呼叫的电话拥有一个呼叫方知道的电话号码) 。socket 利用客户 /服务器模式巧妙地解决了进程之间建立通信连接的问题。服务器socket 半相关为全局所公认非常重要。读者不妨考虑一下,两个完全随机的用户进程之间如何建立通信?假如通信双方没有任何一方的 socket 固定,就好比打电话的双方彼此不知道对方的电话号码,要通话是不可能的。所谓 socket 通常也称作套接字,应用程序通常通过套接字 向网络发出请求或者应答网络请求。以 J2SDK-1.3 为例,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号