网络管理课程的一个实验项目及教学过程设计
2019-05-09王世勋洪双喜
王世勋,张 恩,洪双喜
(河南师范大学 计算机与信息工程学院,河南 新乡 453007)
0 引 言
在网络管理课程中,抽象语法表示的教学内容主要包含ASN.1语法规范、基本编码规则BER、宏定义等部分[1-2]。ASN.1语法规范涉及命名方法、抽象数据类型、子类型与应用类型;BER涉及TLV结构的标签字段编码、长度字段编码以及不同类型数据值编码;宏定义涉及数据类型定义、宏表示与模块定义。合理地设计实验项目能够加深学生对抽象语法表示知识点的理解与掌握,进而提高学生解决实际问题的能力。
1 教学现状与实验设计原则
抽象语法表示的教学现状包括:①抽象语法表示的学习难度大,知识点丰富,涵盖多种ASN.1数据类型、不同标签与类型的编码规则等。知识点应用灵活,要求学生能对具体问题定义出新的类型,并对具体的实例进行BER编码。②教学方法陈旧。教师在课堂讲解知识点,学生跟不上教师的思路,遇到问题时难以获得及时有效的帮助。③实验环节不足。教学大纲结构不合理,理论学时比实验学时多。此外,缺乏合适的实验教材,最近的教改文献[3-4]也忽略了抽象语法表示的实验项目。④学生的学习态度比较差。网络管理课程设置在大三上学期,学生缺乏学习主动性,不愿意钻研理论知识,从而导致学习效果不理想。此外,大部分学生对实验环节缺乏耐心,更愿意操作具有相同结果的实验项目。
针对抽象语法表示的教学现状,设计实验项目时应遵循以下几个原则:①选择合理的实验方案。既要充分覆盖抽象语法表示的各个知识点,又要让不同的学生可以解决不同的实际问题。②采用案例驱动教学。设计良好的应用案例,激发学生的学习兴趣,让学生真正参与进来。③注重理论与实践的联系。在教学大纲中增加实验学时,提高学生的实际动手能力,在实验过程中加深学生对理论知识的理解与掌握。④突出实验的可区分性。避免所有学生提交相同的实验报告,在给出实验题目后,让学生根据自身情况设计方案、分析并完成实验。
2 综合性实验项目
综合性实验要求学生运用课堂讲授的若干个理论知识点解决实际问题,是考核学生掌握知识状况的有效方法。因此,从教学现状与实验设计原则出发,设定抽象语法表示的实验项目为综合性实验。
2.1 实验题目描述
实验目的:理解ASN.1语法与基本编码规则BER,具备初步阅读RFC文档的能力,掌握ASN.1工具的使用方法,学会利用ASN.1语法描述实际问题,并将ASN.1表示的数据转换成BER编码。
实验内容:①定义一个ASN.1数据类型来描述学生的信息,例如学号与姓名等。学生信息类型涵盖ASN.1命名方法、应用标签、上下文标签、整数类型、布尔类型、字符串类型、序列类型与集合类型等知识点。②实例化某个学生的信息,创建ASN.1信息模块,利用ASN.1工具对学生信息类型的实例进行BER编码。在分析TLV结构时,熟练掌握不同标签类别的编码、整数值编码、布尔值编码、字符串值编码与构造类型值编码。
实验环境:配有8G内存的微机一台,Win7及以上版本的操作系统,Eclipse、ASN.1工具与ASN.1 Java 运行库[5]。
2.2 实验组织过程
教师一定要自己先完成实验项目,进而掌握实验的总体难易程度,尽量避免出现太难或太易的情况。在讲授理论课前,教师可以将实验题目发给学生,以便激发学生的好奇心。理论课结束后,实验环节开始执行,占2或4个学时,巩固加强学生对理论知识点的掌握,提高学生的实际动手能力。以小组为单位执行实验操作,每组3人,共同承担学生信息类型的定义、BER编码的实现和TLV结构的分析。为了在有限时间内完成实验,鼓励学生相互讨论与交流,进一步培养学生的竞争与合作意识。实验过程中,因材施教地辅导能力不同的学生,着重培养学生独立思考和解决实际问题的能力。实验结束后,及时记录实验成绩。教师可以采用案例驱动的实验教学方法,介绍抽象语法表示的实验项目。
2.2.1 定义学生信息类型
为了描述学生的信息,利用ASN.1语法可定义如下的StuInfo类型:
根据已定义的StuInfo类型,利用某学生的个人信息实例化如下的myInfo对象:
在定义新类型和对象时,教师应鼓励学生描述自身的实际信息。此外,教师一定要提醒学生,类型名和模块名是以大写字母开头,而对象名以小写字母开头。
2.2.2 实现BER编码
将ASN.1描述的数据转换成BER编码的步骤如下:
(1)安装插件。下载ASN.1开发工具,在Eclipse中选择Help > Install New Software。点击Add按钮,添加解压后的asndt文件,选择ASN.1 SDK与ASN.1 Java编译器,安装完毕后重启Eclipse。
(2)输入序列号。在Eclipse中,选择Windows> Preferences > ASN.1> ASN.1 Java Compiler > General> Serial Number,输入 License Key。
(3)创建ASN.1 Project。在 Eclipse内,选择File > New > Project,输入ASN.1 Project的工程名为Information。
(4)创建ASN.1模块。在Eclipse的Package Explore内,右击Information工程的source文件,选择New > Other。选择 ASN.1 Module,输入模块名Information。
(5)生成Java类文件。打开Information.asn文件,输入已定义的Information模块源代码并保存,在路径Information > output > java >Information内自动生成编译好的Java类文件。
(6)添加ASN.1 Java运行库到编译路径。创建一个名为test的Java Project,在文件夹test中建一个lib文件夹,并将asnrt.jar复制到lib文件夹。右击test项目,选择Properties > Java Build Path > Libraries > Add External JARS,选择lib文件夹下的asnrt.jar,点击Apply。
(7)创建包。右击test项目,选择New >Package,输入包名为mytest。
(8)复制文件。查找到步骤(5)中已生成的Java类文件,将它们复制到mytest包。
(9)创建Java类。右击mytest包,选择New > Class,输入类名TestInformation。打开TestInformation.java文件,输入以下代码:
(10)实现BER编码。在Package Explorer内,右击TestInformation.java文件,选择Run as> Java Application,获得十六进制的运行结果。
通过学习高级语言程序设计、数据库原理与计算机网络等课程,大三学生可以实现BER编码。教师要引导学生建立缜密的编程思维,并注重培养学生的程序调试能力。此外,教师要耐心地指导动手能力较弱的学生,并给予一定的提示;鼓励动手能力较强的学生帮助辅导其他学生的实验操作与代码调试。
2.2.3 TLV结构分析
为了避免知其然而不知其所以然的窘境,需要继续分析运行结果的TLV结构,进而提升学生的知识与能力。根据多年的教学经验,学生较认可教师总结的TLV知识。例如,V字段的整数值编码如下:①编码采用补码形式,占一个或多个八位组。②若整数值在区间[-128,127]内,则编码占一个八位组;若整数值在区间[-32768,-129]或[128,32767]内,则编码占两个八位组;以此类推,若整数值在区间[-28n-1,-28n-9-1]或[28n-9,28n-1-1]内,则编码占n(n > 2)个八位组。③给出任意的整数值,先确定它所占的八位组数,再求补码,最后将补码从高到低排列在第一个八位组的第八位到第一位,第二个八位组的第八位到第一位,依次类推。此外,教师需要提示显式标签与隐式标签在BER编码时的区别。
2.3 实验结果考核
教师一定要重视实验结果的考核,才能无形中提高学生的实践动手能力。考核包含5部分:学生信息类型的定义、BER编码的实现、TLV结构的分析、实验报告的撰写与学习态度,其权重分别是0.2、0.3、0.3、0.1和0.1。对于第1部分,检查ASN.1语法的正确性与知识点的全面性。对于第2部分,考核软件应用的熟练性、代码的编写能力与程序错误的调试能力。对于第3部分,检查BER编码的知识点掌握程度。对于第4部分,评价实验报告的完整性与规范性。此外,如果学生在实验课上有玩手机等情况,可适当减分。
3 结 语
根据学生的普遍反映,上述实验项目能够加深学生对理论知识的理解,激发学生的学习兴趣,提高学生应用所学知识解决实际问题的能力。此外,本实验也丰富了网络管理课程的实践内容。在未来的工作中,尝试利用C或C++等语言来完成ASN.1数据的BER编码,进一步多样化实验的内容和形式。