首页 > 范文大全 > 正文

计算机网络实验教学与NetRiver实验系统

开篇:润墨网以专业的文秘视角,为您筛选了一篇计算机网络实验教学与NetRiver实验系统范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:本文介绍了我系设计开发的计算机网络实验系统NetRiver,该系统拓宽了计算机网络实验的内容,丰富了实验手段,提高了实验效率。

关键词:计算机网络;实验教学netriver实验系统

中图分类号:G642 文献标识码:B

1引言

清华大学计算机系从1985年起开设“计算机网络原理”课程,开设了滑动窗口协议和应用层协议等网络实验内容。之后陆续开设了“计算机网络体系结构”、“无线网络和移动计算”和“计算机网络前沿研究”等研究生课程。2006年开设了强化实验课程“计算机网络专题训练”。在教学实践中,我们提出了“本科打基础、硕士重能力、博士出创新、科研促教学、实践贯始终”的教学理念,强化了计算机网络实验教学。针对不同阶段的学生,设置了不同的实验内容。本科生的网络课程重点在于基础网络协议和原理的掌握,通过配置观察实验和基本协议实验,加强感性认识,提高动手能力;硕士生的网络课程注重综合能力和对网络体系结构的整体把握,通过复杂协议编程实验,提高包括分析、设计和实现等在内的综合能力;博士生的课程则注重研究和创新,利用实验系统的可扩展性设计新实验、验证新算法。图1给出了计算机网络实验教学内容、课程体系和人才培养目标之间的关系。

计算机网络实验教学设计存在很多难点。网络协议数量巨大,TCP/IP协议栈的常用协议有数百个,主机、路由器等网络结点的协议栈实现有很大区别,各个协议的原理、功能和实现均不相同;协议描述文本难于理解、协议实现复杂,例如RFC 793(TCP)有85页,代码长度近一万行,RFC 2328(OSPF)有244页,代码长度超过三万行;课程实验依赖具体的操作系统,常用的操作系统包括Windows、Linux、BSD、Solaris等;网上存在大量开源代码供学生参考使用,难以公平评价学生的实验结果;网络协议栈复杂,难以有效检查;学生多,实验多,难以管理。

总结国内外以往的计算机网络原理实验教学,主要存在以下几个不足:

 由于缺乏软硬件支撑环境,通常会设计一些模拟实验来代替实际的网络实验。这样做的缺点是学生缺乏对真实网络环境的感性认识和理解。

 由于常用的操作系统只提供应用层的网络编程接口,学生只能做网络应用实验。应用层实验虽然能够锻炼学生网络编程的能力,但却不容易帮助学生理解底层协议的原理和工作流程,进而忽视“计算机网络原理”课程的核心内容和教学目标。

 缺乏网络核心协议的实验,例如BGP和OSPF。

 网络实验的管理和维护非常困难。做网络实验的学生多、实验项目多。在每次实验之前,实验管理人员和助教需要花费大量的时间调整网络来满足实验要求。

我们在长期从事计算机网络教学的基础上,利用科研成果,研制开发了NetRiver计算机网络实验系统。NetRiver系统包括客户端、测试服务器和管理服务器三个组成部分,具有以下特点:可控真实的全协议栈网络实验环境,支持实验代码编辑、编译和调试的集成编译环境,可视化的协议报文捕捉与行为分析,多层次实验手段,基于脚本语言的可扩展实验描述和执行,基于协调测试法的自动实验测试和功能丰富的实验管理平台。NetRiver实验系统拓宽了计算机网络实验内容,丰富了实验手段,提高了实验效率。

2相关工作

北京航空航天大学在2004年启动“先进计算机网络实验基地建设”项目,建立了北京市重点实验室――网络技术实验室。该网络实验室基本上采用全套的华为网络路由器和交换机设备,从低端到高端,建立了一个小型的互联网模拟实验室。该实验室构建了国内一流的计算机网络技术教学实验环境,但其存在一个很大的问题就是硬件投资过大,并且在IT技术发展迅猛的今天,这些硬件设施存在生命期短的问题。

Stanford大学本科计算机网络课程“Introduction to Computer Networks”为学生的实验提供了一个Linux操作系统下的集群作为中央服务器,学生可以远程登录,在集群环境中对自己的代码进行编译及调试。但由于没有便捷的一体化集成环境,在Linux操作系统中所有编译和调试的工作都需要学生手工进行,要求比较高,可能造成学生精力分散,无法集中于网络协议的设计和实现,并且这也需要Linux下编程的相关先修课支持。

MIT大学的本科生网络教学是放到课程“Computer Systems Engineering”中进行的,主要的动手环节是学生自己做Project的全套工作。虽然这样比较锻炼学生的动手能力,但跟Stanford大学的实验类似,对学生Linux下编程能力要求比较高,对于没有修过相关课程的学生来说,精力过多消耗在Linux编程上,而淡化了网络协议的理解。

3计算机网络实验系统NetRiver

计算机网络实验系统NetRiver是为计算机网络教学开发的一套网络实验平台系统。目前的网络实验大多以配置观察实验为主,无法使学生深入了解网络协议运行机制。由于网络实验本身往往涉及到系统底层实现,在真实环境中进行模拟实验一般会比较困难。比如进行TCP实验时,由于操作系统内核对TCP协议栈已经有了实现,因此学生所写测试程序发出的数据包往往会作系统处理或丢弃,导致无法进行TCP处理过程的模拟。针对上述问题,本系统为学生提供了进行网络协议编程、调试、可视化执行和自动测试的实验平台。在此平台上,学生无需关心系统对实验的影响,能够直接编写和测试协议相关的核心内容。

图2为实验系统常用的连接拓扑示意图。NetRiver系统由一台或多台测试服务器、一套客户端软件和一套实验管理软件构成。测试服务器通过与客户端交互协议包,实现实验功能,并提供自动测试和实验结果评分。客户端软件运行于多台PC机上,为用户提供基于Windows的集成实验环境,学生编写实验代码、调试和运行实验程序均在客户端软件上执行。管理服务器保存用户信息、测试例、实验代码和测试结果,管理客户端和测试服务器,实现基于Web的实验管理功能。

3.1NetRiver客户端

NetRiver客户端提供了界面友好的编程开发、调式和测试环境,同时还可以动态捕捉和分析实验过程中收发的数据报文,方便学生检查程序错误和进行调试。

图3所示是代码编写界面,学生在此界面中可以编写代码,并使用系统自带的编译工具进行编译和调试。

图4是报文分析界面,提供可视化的报文分析功能,可清楚的看到发出和收到的数据包,同时对数据包中的字段进行解析并显示,帮助学生分析程序中可能存在的问题。

3.2NetRiver测试服务器

学生完成实验之后,可选择相应测试例并开始对自己所做实验进行测试。测试过程是在客户端和测试服务器之间自动完成的,包含一系列的发包、收包过程。整个过程由事先编写好的脚本系统控制。根据实验内容和所选测试例,测试服务器会向客户端发出包含一定内容的数据报文,由学生所编写的程序对该报文进行处理,并得出一定结果(如回复、转发、丢弃或接受等),经过一系列的收发包过程,测试服务器会对实验完成情况做出相应评测,并将结果提交到管理服务器。

整个测试过程可描述如下:测试服务器打开脚本配置文件script,并将脚本装载到内存。客户端根据主界面传入的命令行参数获得需要测试服务器IP、测试例号和测试项目号。客户端和测试服务器建立socket连接。测试服务器收到建连请求后创建一个脚本解析器。客户端建立一个解析器。客户端向测试服务器发送下载脚本的请求。测试服务器收到请求后,找到对应地脚本解析器,并在脚本解析器中完成初始化,步骤包括以下两个部分。根据请求中包含地测试项目号和测试例号组装包含客户端脚本内容的分组,并发送给客户端。根据请求中包含地测试项目号和测试例号下载服务器端的脚本内容到本解析器,初始化相关变量。客户端收到包括脚本的分组后,填充到解析器中,并完成初始化操作。客户端和测试服务器端的解析器根据脚本的内容逐行解释执行,并调用相应的回调函数完成测试过程。测试服务器判定测试结果是否正确。测试服务器将结果发送到客户端。客户端将结果发送到主界面。

3.3NetRiver管理服务器

管理服务器用于对学生和实验信息进行管理,包括学生帐号和基本信息、实验内容及测试例、每个学生的试验完成情况等。由于整个实验是一个基于脚本控制的自动完成的过程,学生在对自己的实验进行测试之后,成绩会自动提交到管理服务器进行登记。教师或者助教可方便的在管理服务器提供的Web界面上查看所有学生的实验完成情况并进行汇总统计,学生也可通过该界面查看自己的实验结果。

3.4目前支持的网络实验

NetRiver实验系统目前所支持的实验如表1所示。由于系统使用了可扩展的脚本描述方法来定义实验和测试例,因此教师可根据需要方便的增加所需实验内容,实现扩展实验。NetRiver系统为每个实验都提供配置实验和编程实验两种实验方式,适应不同的实验要求。

4NetRiver实验系统的特色和创新点

可控真实的全协议栈网络实验环境

本实验系统提供了一个IPv4/IPv6全协议栈的网络实验环境,并且该环境建立在可控真实网络基础上。学生在一个真实网络环境中做实验,但是实验过程中不会受到杂乱数据的影响,可集中关注与实验相关的数据包收发。同时,学生实验可涉及到完整协议栈,无论是数据链路层、网络层还是传输层和应用层,都可以通过编程开发或者交互式配置观察来深入理解相应网络协议机制。

 支持实验代码编辑、编译和调试的集成编译环境

实验系统面向学生的客户端提供了一整套开发调试解决方案。学生可在客户端上完成包括登录、实验选择、测试例选择、代码编写、编译、调试和测试在内的完整过程。界面设计友好,可让学生迅速进入实验状态。

 可视化的协议报文捕捉与行为分析

为了便于学生观察报文和调试程序,本实验系统还提供了可视化报文分析功能。系统可在学生程序运行过程中实时捕捉实验相关报文,并且按照其时间顺序和发送方向以可视化的方式在界面上描绘出来,并且学生也可具体查看每个分组解析之后各域的内容,从而判断自己的程序潜在的错误。

 面向因材施教的多层次实验手段

实验系统不但提供了全协议栈的实验支持,而且对学生也提供了多种可选的实验手段。除了编程开发实验之外,也可进行交互式配置观察实验。即,学生可在图形化界面上根据当前实验要求通过手动填写分组各个域的值来完成实验。这样既可以让学生掌握分组组成和协议运行过程,同时也不要求学生掌握编程技术,可适合于文科类学生使用。

 基于脚本语言的、可扩展的实验描述和执行

实验系统所支持的实验是基于脚本语言编写的,具有良好的可扩展性。即,当实验内容发生变化,或者需要增删实验时,只需要修改或编写相应的脚本,而无需对系统本身进行修改,极大地简化了实验系统的更新和维护工作,同时使其具有非常灵活的可定制性。

 基于协调测试法的自动实验测试

完成某个实验之后,实验平台可按照学生选择的测试例自动对该学生所做的配置或者编写的代码进行测试,同

时返回测试通过的数量和失败的数量。学生可在此基础上进行检查和调试,整个过程无需教师或助教的参与。

 功能丰富的实验管理平台

实验系统针对学生和实验管理提供了一个功能丰富的B/S结构管理平台。学生可登录到该Web界面查看自己做过哪些实验以及实验的通过情况;助教可通过该平台查看所有学生的实验情况,并可进行汇总分析;教师除了可看到所有学生的情况之外,还可对学生和实验进行增删等管理操作。该平台避免了手工管理大量学生实验成绩的繁琐,可十分高效、方便而又准确的对学生实验情况进行管理。

5总结

NetRiver实验系统从2006年开始在 “计算机网络原理”课程中使用,取得了很好的效果。到目前为止,共有约两千多人次使用本系统完成教学实验。通过便捷、系统的实验以及与原理课程的紧密结合,极大促进了学生对网络体系结构的认识和对网络协议及相关原理的掌握。另外,由于实验系统的使用,打破了传统教学中需要学生学习复杂的系统接口、无法深入编写协议相关代码、无法清晰的观察协议运行机理的局面,赢得了学生的高度评价。

目前NetRiver系统已经在以下几个单位得到了部署和应用:清华大学计算机系、清华大学软件学院、清华大学网络中心dragonlab实验室、北京大学、信息工程大学。另外,黑龙江大学和浙江工商大学等院校正在远程试用。

参考文献

[1] Andrew S Tanenbaum. 计算机网络(第4版)[M]. 北京:清华大学出版社,2004.

[2] 陈鸣,常强林,岳振军. 计算机网络实验教程:从原理到实践[M]. 北京:机械工业出版社,2007.

[3] 徐恪,吴建平,徐明伟. 高等计算机网络―体系结构、协议机制、算法设计与路由器技术[M]. 北京:机械工业出版社,2003.