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