计算机网络数据链路层教学研究

时间:2022-09-13 03:54:02

计算机网络数据链路层教学研究

摘要:针对学生普遍反映的计算机专业课程偏重理论、内容抽象、难以理解和运用的问题,以计算机网络数据链路层3个基本问题的解决方案为例,讨论、分析和扩展相关理论的内涵与外延,以聊天软件消息传输和软件数字签名的程序设计为典型案例,分析上述基础理论与实际软件开发之间的共同点和内在联系,运用基础理论解决实际软件开发问题,交流计算机教学中理论与实践结合教学法的优点、体会和教学案例。

关键词:计算机网络;数据链路层;帧定界;透明传输;差错检测;案例教学

计算机网络课程配套实验通常都是实战型实验。通过实验,一方面,能够帮助学生掌握一些具体的网络配置和维护技能,比如,制作网线,配置交换机,配置路由器,配置应用层Web、FTP、DHCP服务等;另一方面,也能够帮助学生更好地理解课本上相关的网络原理和知识点。因此,计算机网络课程受到学生的普遍欢迎。

学生在学习过程中,很容易将计算机网络课程与网络管理和维护联系起来,对计算机网络课程的认识,还存在以下几个误区:

(1)认为学习计算机网络课程只是为今后从事网络管理和网络维护工作打下基础;

(2)对计算机网络课理论内容兴趣不大,只对直观的、实战性强的内容有兴趣;

(3)认为计算机网络技术已经比较成熟,无须再去认真学习,只要使用当前已有的网络设备和网络技术即可。

在计算机网络教学中,对于直观上实战性较强的内容,学生普遍表现出较高的学习兴趣,但对于比较抽象化或理论化的内容,学生通常会质疑学习这些内容的意义和价值,该现象在高校教学中普遍存在。解决该问题的一种有效方法就是将理论与实际应用相结合,通过分析和举例,讲解抽象理论背后的思想与实际工程项目之间的内在联系并加以扩展,给学生较大的启发,并引起学生的注意和兴趣。

笔者所在的网络教研小组使用的计算机网络教材是谢希仁教授编著的《计算机网络(第6版)》,本文以该教材中数据链路层要解决的3个基本问题(封装成帧、透明传输和差错检测)为例,介绍相关知识点的内涵和外延,对知识点内容进行扩展,并举例说明相关理论如何与具体应用相结合,解决实际问题。

1.帧定界的原理与实践

对于封装成帧的原理,教材已经给出了清晰的论述。封装成帧的主要功能包括帧定界、定义和填充数据链路层使用的各控制字段等,本节主要论述帧定界的相关原理与具体应用。

1.1帧定界的原理

对于帧定界的功能,主要从以下两个方面进行理解。一方面是自顶向下分析,来自网络层的、独立的IP数据报,在数据链路层需要封装成帧,从而形成各自独立的传输单元通过物理层发送出去;另一方面是自底向上分析,数据链路层需要处理来自物理层的比特流,需要从比特流中区分出每一帧的开始比特和结束比特,因此也需要有一种封装成帧的机制,能够从比特流中提取出各个数据帧。

如果数据帧之间的发送存在时间间隔(如以太网),帧定界则能够自然实现;但如果数据帧的发送是连续的,则需要帧定界机制。帧定界的主要思想是使用帧定界符标识数据帧的起始和结束,帧定界符添加在数据帧的首部和尾部。帧定界符的本质是一串事先定义的0-1比特序列。

1.2帧定界原理的具体实践

帧定界原理解决了数据链路层的数据帧定界和数据帧提取问题,其实现思路并不难理解。为了让学生对该原理进行更深入的思考、理解和灵活运用,在讲解TCP协议面向流的传输机制时,可以将TCP流的特点与帧定界原理相结合,讨论如何解决基于TCP协议的聊天消息发送和接收问题。

TCP协议面向流的传输特点比较抽象,含义丰富,对于初学者,难以理解这些机制背后的含义。与面向报文的UDP协议不同,TCP传输是面向流的,提示学生去思考“若基于TCP协议实现聊天消息发送和接收,该方案是否可行,是否存在待解决的问题”。根据笔者的教学经验,对于初学者,很难想到直接使用TCP传输聊天消息存在接收者无法从TCP数据流中自动提取出每个消息的问题。因为TCP是面向流的,消息和消息之间在TCP流中无间隔。当给学生提示该问题时,很多学生表露出恍然大悟的表情,对于TCP面向流的重要特性也自然能够理解(本文对TCP面向流的其他含义不做介绍)。然后,引导学生再次回顾数据链路层帧定界要解决的问题和解决原理,分析该问题与帧定界问题的共同点,引导学生去思考如何利用帧定界原理去解决基于TCP协议的聊天消息发送和接收问题。学生平日使用OO等通信工具比较多,对如何实现聊天消息传输比较有兴趣,通过分析该实际软件的需求与解决方案,让学生既理解了TCP面向流的重要含义,同时也对帧定界问题的内涵有更多的理解,借鉴帧定界的解决思路,解决TCP数据流中用户消息间的定界问题。

笔者讲授相关内容时,与学生讨论如何实现基于TCP协议的聊天消息的发送和接收问题,调动了学生的兴趣和积极性,加深了对知识点的理解,同时也启发学生去思考如何灵活运用相关知识点解决实际问题,取得了较好的教学效果。

2.透明传输的原理与实践

2.1透明传输的原理

透明传输问题是从帧定界问题引入的,解决数据帧的数据部分若出现帧定界符则会破坏帧边界的问题。透明传输的实现原理包括字符填充法和零比特填充法等。其本质都是对数据部分出现的帧定界符进行转义或修改,也包括对转义字符的转义等,实现机理不难理解。

2.2透明传输原理的具体实践

对于透明传输原理的具体实践,仍以“如何实现基于TCP协议的聊天消息的发送和接收”为例,同样,需要在学习了TCP传输的特点后进行讨论。在1.2小节论述内容的基础上,继续探讨“若将帧定界机制引入基于TCP协议的消息传输中,是否同样会存在消息透明传输的问题和需求”,即在消息的内容部分是否会出现消息定界符比特序列的问题。若存在该问题,如何在消息传输时解决。然后,提示学生思考,若直接借鉴数据链路层帧的透明传输方案,该如何解决消息透明传输的问题;接着讨论若不采用透明传输的方案,是否存在其他解决途径。

笔者讲授相关内容时,与学生讨论该问题,启发学生从多角度思考解决问题的方法,以透明传输为例,思考提出的解决方案是否会引入新的问题,并将透明传输的原理与基于TCP的消息传输解决方案相结合,将多个知识点综合运用,解决聊天消息传输的具体软件开发问题,提高了学生分析和解决问题的能力,学生表现出较大的兴趣和参与度,教学效果良好。

3.差错检测的原理与实践

3.1差错检测的原理

差错检测用于判断接收的数据帧是否存在传输错误,在讲解具体实现机制之前,首先向学生介绍该问题的难点在于接收者事前并不知道发送者要发送的数据内容,在该情况下去判断接收的内容是否正确,看起来像是一个悖论;接下来留给学生一定的时间去思考该问题,然后介绍差错检测的原理。

用于数据链路层的典型差错检测方法是以CRC算法为代表的检错方法,该方法在教材上有详细描述。以CRC算法为代表的检错方法的核心思想是对要发送的数据进行计算,生成校验码,然后把数据与校验码同时传输给接收者,接收者对收到的数据和校验码再次进行相同的校验计算,判断在传输过程中是否存在传输错误。

3.2差错检测方法的扩展

在介绍完CRC算法的原理与计算细节之后,对差错检测章节的内容进行如下扩展。用于数据链路层的校验方法都属于检错方法类别,除CRC算法外,典型的检错算法还包括消息摘要算法(如MD5算法)、安全散列算法(如SHA算法族)等。除检错技术外,纠错技术的应用也十分广泛。在纠错技术方面,存在奇偶校验、海明校验等典型的纠错算法,CRC算法本身也具有一定的纠错能力,但对CRC生成多项式和校验数据的长度有要求。检错和纠错的能力与码距有关。除了上述典型的纠错算法外,还存在多种基于复杂数学运算的纠删码(erasure code)技术。由于课时量有限.上述技术只能给学生简要的介绍,让学生对差错的检测和纠正有更加全面的认识,拓展学生的知识面,感兴趣的学生可以课后自行学习相关内容。

学生通常会产生两个疑问:第一个是为什么数据链路层的检错方法选择了CRC算法,而不是其他的检错算法;第二个是为什么数据链路层选择了检错机制而不采用纠错机制。第一个问题可以从以下方面分析:①CRC-32算法的检错能力本身已经比较强大,检错率很高,达到了数据链路层差错检测的要求;②CRC算法能够对输入的数据进行流式计算,网络适配器接收比特流的同时可以通过硬件即时完成CRC校验。第二个问题可以从以下方面分析:一方面物理通信链路比特流传输错误通常是受某种影响而产生的突发性错误,出错的位置可能包含多个连续或非连续比特,若选用纠错码,需要使用纠错能力非常强的纠错算法,这些算法计算量比较大,而且在出错比特数量比较多的情况下,甚至无法纠正全部错误;另一方面,当前物理链路的可靠性非常高,误码率很低,使用检错算法既能检测比特错误,又因为其计算量相对较小,因此对数据流的处理速度影响较小,若检测到错误,可以采用重传或者交给高层协议处理等方式解决。

3.3差错检测的具体应用

差错检测技术的本质是检测给定的数据是否存在比特错误,该技术不仅适用于数据链路层的差错检测,也适用于其他需要进行数据错误检测的场景。典型的检错算法包括CRC-32、MD5和SHA-1等。差错检测技术的另一个典型应用是软件的数字签名。软件供应商一款软件后,用户可以通过各种途径获取到该软件,典型的来源包括官方网站下载、第三方网站分发、u盘拷贝、光盘传播等,提示学生思考如果软件是从第三方网站上下载的或者是从其他同学的计算机里拷贝的,如何保证该软件在传播过程中没有被修改、没有中病毒或者木马呢?学生对该问题都很有兴趣,这也是学生经常面临的实际问题。通过对该问题进行讨论,分析差错检测技术的具体应用非常有代表性。首先,为了使学生对该解决方案有直观的感性认识,可以打开一款带有数字签名的软件,例如官方下载的QQ软件,然后右键点击软件,选择“属性”,可以看到属性中的数字签名页面的信息,如图1所示;接下来点击“详细信息”按钮,则会弹出新的对话框,出现“此数字签名正常”的提示,如图2所示。

关于数字签名的详细信息可以点击“高级”标签页查看,关于数字证书自身的信息可以点击“查看证书”按钮查看。为加强演示效果,可以使用二进制编辑器把QQ软件中的部分字节修改或者删除,然后再次点击软件的属性,会发现数字签名的页面消失了,如图3所示。需要说明的是,把软件的某些字节修改后,数字签名页面可能仍然存在,但是点击“查看证书”按钮,则会出现“此数字签名错误”的相关提示。

演示至此,学生都很感兴趣,也对差错检测有了更深刻的认识。然后提示学生思考数字签名技术应该如何实现,思考该技术与差错检测之间的关联。数字签名算法本身由多种摘要算法和非对称加密算法等组合而成,其关键功能之一就是如何鉴别软件在发行后是否被恶意修改过。至此,将差错检测算法与具体的软件数字签名技术结合起来,其解决思路是相通的,软件数字签名中的完整性检测的本质就是差错检测,软件发行方首先会对软件运行一种摘要算法,生成一段固定长度的摘要,其本质等同于对数据包进行cRc校验,生成一段冗余码,然后把软件与软件摘要共同,接收者下载软件后,使用相同的摘要算法对下载的软件再次进行摘要计算,并与者公布的摘要做比对,如果一致,则说明软件没有被修改,反之,提示用户此数字签名错误。数字签名要解决的另一个关键问题是如何防止摘要本身被修改,这涉及密码学的相关内容,可以稍做提点和介绍即可,在此不再详细展开。

灵活使用差错检测技术的具体应用还有很多,比如当前流行的网盘、云盘中的“秒传”技术的实现,卫星数字电视信号数据的下发等,都需要使用不同类型的差错检测和纠错技术。可根据具体课程进度进行有选择的讲解。

笔者采用上述案例向学生讲授差错检测相关内容,不仅让学生掌握了差错检测的原理与计算,而且通过扩展和举例,拓宽了学生的思路,使其掌握了差错检测算法的本质,能够灵活应用,解决实际软件开发中的问题。

4.教学效果评价与探讨

在教学过程中,笔者及所在的网络教研小组采用原理与实践相结合教学方法,没计典型案例,将计算机网络原理运用到实际软件开发中。多年教学实践表明,该方法受到学生的普遍欢迎,加深了学生对课本原理的理解,扩展了学生的知识面,将课本上看似枯燥的原理转化成能解决实际问题的方法,以点带面,启发学生深入思考网络教材中的各个原理,把各门课程的知识点联系成一个有机整体,而不要零散地、孤立地、片面地去理解知识点,提高了学生的学习兴趣,调动了学生学习的积极性。

学生受限于自身的年龄和知识面,经常会凭直觉判断某个知识点是否有用或无用。改变学生这种错误学习观念和错误学习方法的一种有效途径就是,举出典型的应用案例使其信服,从而渐渐改变学生的学习观念,培养学生的学习兴趣和耐心,形成系统性的知识结构和思维方式。

教师可以根据学生的实际情况,因材施教,在讲解的深度和广度上自行把握。作为一名大学专业教师,除需要讲明白课本上的内容外,更需要引导学生端正学习态度,培养学习兴趣,改进学习习惯和学习方法,在教学中锻炼学生的逻辑思维能力、综合解决问题的能力和创新能力,为国家的人才培养贡献一份微薄之力。

上一篇:关于国有企业经营者薪酬激励模式及机制改革 下一篇:小学数学教学中应怎样提高学生的几何直观能力