实验一:数据链路层滑动窗口协议的设计与实现(4)
1.实验类别(4)
2.实验内容和实验目的(4)
3.实验学时(4)
4.实验组人数(4)
5.实验设备环境(4)
6.教学要点与学习难点(4)
7.实验步骤(5)
7.1熟悉编程环境(5)
7.2协议设计和程序总体设计(5)
7.3编码和调试(5)
7.4软件测试和性能评价(5)
7.5实验报告及程序验收(5)
8.编程环境(6)
8.1程序的总体结构(6)
8.2实验环境所提供的文件和编译运行方法(7)
8.3日志(8)
8.4协议运行环境的初始化(9)
8.5与网络层模块的接口函数(10)
8.6事件驱动函数及程序流程(10)
8.7与物理层模块的接口函数(12)
8.8CRC校验和的产生与验证(12)
8.9定时器管理(13)
8.10协议工作过程的跟踪和调试(13)
8.11命令行选项(14)
8.12错误信息(15)
9.正确性测试及性能测试(16)
10.研究与探索的问题(17)
10.1CRC校验能力(17)
10.2CRC校验和的计算方法(17)
10.3程序设计方面的问题(17)
10.4软件测试方面的问题(17)
10.5协议改进(18)
10.6对等协议实体之间的流量控制(18)
10.7与标准协议的对比(18)
11.实验报告要求(18)
11.1实验内容和实验环境描述(18)
11.2协议设计(18)
11.3软件设计(19)
11.4实验结果分析(19)
11.5研究和探索的问题(19)
11.6实验总结和心得体会(19)
11.7源程序清单(20)
附录一源程序书写格式(21)
实验一:数据链路层滑动窗口协议的设计与实现
1.实验类别
程序设计型
2.实验内容和实验目的
利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为8000bps全双工卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度在240~256字节范围。
通过该实验,进一步巩固和深刻理解数据链路层的字节填充方式的成帧技术,误码检测的CRC校验技术,以及滑动窗口的工作机理。滑动窗口机制的两个主要目标:(1)实现有噪音信道环境下的无差错传输;(2)充分利用传输信道的带宽。在程序能够稳定运行并成功实现第一个目标之后,运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。为实现第二个目标,提高滑动窗口协议信道利用率,需要根据信道实际情况合理地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限以及ACK搭载定时器的时限。这些参数的设计,需要充分理解滑动窗口协议的工作原理并利用所学的理论知识,经过认真的推算,计算出最优取值,并通过程序的运行进行验证。
通过该实验提高同学的编程能力和实践动手能力,体验协议软件在设计上各种问题和调试难度,设计在运行期可跟踪分析协议工作过程的协议软件,巩固和深刻理解理论知识并利用这些知识对系统进行优化,对实际系统中的协议分层和协议软件的设计与实现有基本的认识。
3.实验学时
9学时。
4.实验组人数
5.实验设备环境
WindowsXP环境PC机,MicrosoftVisualC++6.0集成化开发环境。
6.教学要点与学习难点
课堂教学和教材中给出了滑动窗口协议的基本原理,并给出了多个示意性程序,尤其是“回退N步(Go-Back-N)”协议和“选择重传”协议。这些示意性程序主要用于描述协议的基本工作过程并阐述滑动窗口的基本原理,为了突出主题还省略了许多处理细节,不可能实际运行。一个网络协议的具体实现程序可能会作为一个操作系统支撑下的独立进程,或者,作为操作系统内核中的中断服务程序或驱动程序。协议的具体实现会受到协议软件所处的操作系统支撑环境或者内核编程模式的限制。本次实验所提供的编程环境用WindowsXP中进程仿真链路层的一个站点,程序的设计受限于编程环境所提供的功能以及实验题目所设定的具体问题和目标。因此,不可能完全照搬课堂教学中的示意性程序进行简单的原理验证,必须认真考虑具体问题和具体软件设计环境,但是这些示意性程序有重要的参考作用。
实验题目仅仅给出了物理层信道模型和分组层数据的大小,协议的设计有很大的自由度。由组内同学共同讨论完成,包括成帧方法和帧控制字段的设计,滑动窗口的过程控制。从易到难,可选的协议类型为“不搭载ACK的Go-Back-N协议”,“使用搭载ACK技术的Go-Back-N协议”,“选择重传协议”,要求必须是全双工通信协议。组内同学根据自身条件和不同协议类型的难度系数选做其中一种或多种。
教材中的示意性程序未对滑动窗口尺寸和重传定时器时限的详细设计进行充分说明。在实验过程中需要利用基本原理,明确协议工作参数取值的变化对协议工作正确性和信道利用率的利弊影响,根据具体信道情况和协议软件的实现方案,为协议参数设置最优值,以追求高线路利用率。指导教师提供一个可执行样例程序,将所实现的协议软件所达到的性能与样例程序比较,分析自己所实现软件的优势或缺陷。从理论上推导出线路利用率的极限,依此作为基本依据衡量所实现软件的性能优劣。找出所设计软件达到的线路利用率与理想性能之间的差距,并给出改进算法或者未能达到理想性能的原因。
整个程序的编程工作量不大,但是考虑到对滑动窗口协议的工作原理的理解可能不够深入和细致,考虑到协议软件调试的困难程度,以及完成实验的同学对C语言的运用和操控能力,软件调试中遇到问题后解决问题的能力,以及代码中逻辑的复杂程度,对完成整个实验应给予足够重视。
7.实验步骤
7.1熟悉编程环境
安装好VC6.0或兼容的更高版本的C语言编程环境,运行指导教师提供的样例程序,明确实现目标,了解信道工作参数的设置方法,网络层分组序列产生器的模式选择方法。根据所提供的资料熟悉编程环境,了解程序的主体运行框架,系统提供的子程序功能,与物理层和与网络层程序接口的方法,定时器的设置方法。其中,与物理层程序的接口方法与教材中的示意性程序差别较大,应特别注意。
7.2协议设计和程序总体设计
7.3编码和调试
将所设计的协议编码实现并上机调试通过,实现数据链路层两个站点之间的通信。
7.4软件测试和性能评价
在无误码信道环境下运行测试:理论上推导出无误码信道环境下的最佳信道利用率,设置仿真软件中的信道工作于无误码模式,观察和记录信道利用率,并与理想值进行比较。
有误码信道环境下的无差错传输:检查软件能否在有误码信道环境下实现无差错传输,并进行调试。
测试阶段根据具体信道模型,通过细致的理论分析,合理调整协议工作参数和程序实现方式,追求有误码信道环境下更高的信道利用率,并对程序进行合理优化。
7.5实验报告及程序验收
研讨第10节“可研究与探索的问题”提出的问题,总结实验过程中遇到的问题和解决方法,按要求撰写实验报告,并接受实验指导教师面对面现场点评和质疑。