课程设计报告滑动窗口协议仿真.pdf

上传人:深夜****等你... 文档编号:84238368 上传时间:2023-04-04 格式:PDF 页数:15 大小:523.67KB
返回 下载 相关 举报
课程设计报告滑动窗口协议仿真.pdf_第1页
第1页 / 共15页
课程设计报告滑动窗口协议仿真.pdf_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《课程设计报告滑动窗口协议仿真.pdf》由会员分享,可在线阅读,更多相关《课程设计报告滑动窗口协议仿真.pdf(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 课程设计报告滑动窗口协议仿真 公司内部档案编码:OPPTR-OPPT28-OPPTL98-OPPNN08 滁州学院 课程设计报告 课程名称:计算机网络 设计题目:滑动窗口协议仿真 系 别:计算机与信息工程学院 专 业:计算机科学与技术 组 别:第五组 起止日期:2011 年 11 月 24 日2011 年 12 月 7 日 指导教师:赵国柱 计算机与信息工程学院二一一年制 课程设计题目 滑动窗口协议仿真 组长 赵育坤 学号 班级 计专 1 班 系别 计算机与信息工程学院 专业 计算机科学与技术 组员 闫婷、张侠、余静、于东锋、张飞、赵育坤 指导教师 赵国柱 课程设计目的 掌握滑动窗口协议的基

2、本原理,并能够用所学计算机高级语言进行编程模拟 课程设计所需环境 开发环境:VC+运行环境:Windows 操作系统 课程设计任务要求 1程序按照滑动窗口协议实现端对端的数据传送。包括协议的各种策略,如包丢失、停等应答、超时等都应有所仿真实现 课程设计任务书 一.引言 二.基本原理 窗口机制 1bit 滑动窗口协议 2显示数据传送过程中的各项具体数据。双方帧的个数变化,帧序号,发送和接受速度,暂停或重传提示等 课程设计工作进度计划 序号 起止日期 工 作 内 容 分工情况 1 11 月 24号11 月27 号 了解工作要求,明确分工内容,网上查阅相关资料 所有组员共同参与 2 11 月 28号

3、11 月30 号 sender 队列模块的编写 由闫婷完成 3 12 月 1号12 月4 号 sender 主函数的编写 由赵育坤、张飞完成 4 11 月 28号11 月30 号 receiver 队列模块的编写 由张侠完成 5 12 月 1号12 月4 号 receiver 主函数的编写 由余静、于东锋完成 6 12 月 5号12 月7 号 最后汇总,调试 由赵育坤、于东锋完成 指导教师签字:年 月 日 教研室审核意见:教研室主任签字:年 月 日 后退 N 协议 选择重传协议 流量控制 三.需求分析 课程设计题目 开发环境 运行环境 课程设计任务及要求 界面要求 网络接口要求 四.详细设计

4、结构体的定义 发送方的主要函数 接受方的主要函数 五.源代码 发送方的主要代码 接收方的主要代码 六.调试与操作说明 致谢 参考文献 课程设计的主要内容 1.引言 早期的网络通信中,通信双方不会考虑网络的拥挤情况直接发送数据。由于大家不知道网络拥塞状况,一起发送数据,导致中间结点阻塞掉包,谁也发不了数据。在数据传输过程中,我们总是希望数据传输的更快一些,但如果发送方把数据发送的过快,接收方就可能来不及接收,这就造成数据的丢失。因此就有了滑动窗口机制来解决这些问题。早期我们使用的是 1bit 滑动窗口协议,一次只发送一个帧,等收到 ack 确认才发下一个帧,这样对信道的利用率太低了。因此提出了一

5、种采用累积确认的连续 ARQ 协议,接收方不必对收到的帧逐个发送 ack确认,而是收到几个帧后,对按序到达的最后一个帧发送 ack 确认。同1bit 滑动窗口协议相比,大大减少了 ack 数量,并消除了延迟 ack 对传输效率的影响。但是,这会产生一个新的问题,如果发送方发送了 5 个帧,而中间的第 3 个帧丢失了。这时接收方只能对前 2 个帧发出确认。发送方无法知道后面三个帧的下落,只好把后面的 3 个帧再重传一次,这就是回退 N 协议。为了解决这个问题,又提出了选择重传协议。当接收方发现某帧出错后,继续接受后面送来的正确的帧,只是不交付它们,存放在自己的缓冲区中,并且要求发送方重传出错的那

6、一帧。一旦收到重传来的帧后,就可以将存于缓冲区中的其余帧一并按正确的顺序递交给主机。2.基本原理 窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。接受方为其窗口内的每一个序号保留了一个缓冲区。与每个缓冲区相关联的还有一位,用来指明该缓冲区是满的还是空的。若从滑动窗口的观点来统一看待 1

7、比特滑动窗口、后退 n 及选择重传三种协议,它们的差别仅在于各自窗口尺寸的大小不同而已。1 比特滑动窗口协议:发送窗口=1,接收窗口=1;后退 N 协议:发送窗口1,接收窗口=1;选择重传协议:发送窗口1,接收窗口1。1bit 滑动窗口协议 当发送窗口和接收窗口的大小固定为 1 时,滑动窗口协议退化为停等协议(stopandwait)。该协议规定发送方每发送一帧后就要停下来,等待接收方已正确接收的确认(acknowledgement)返回后才能继续发送下一帧。由于接收方需要判断接收到的帧是新发的帧还是重新发送的帧,因此发送方要为每一个帧加一个序号。由于停等协议规定只有一帧完全发送成功后才能发送

8、新的帧,因而只用一比特来编号就够了。其发送方和接收方运行的流程图如图所示。后退 N 协议 由于停等协议要为每一个帧进行确认后才继续发送下一帧,大大降低了信道利用率,因此又提出了后退 n 协议。后退 n 协议中,发送方在发完一个数据帧后,不停下来等待应答帧,而是连续发送若干个数据帧,即使在连续发送过程中收到了接收方发来的应答帧,也可以继续发送。且发送方在每发送完一个数据帧时都要设置超时定时器。只要在所设置的超时时间内仍收到确认帧,就要重发相应的数据帧。如:当发送方发送了 N 个帧后,若发现该 N 帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重新发送出错

9、帧及其后的 N 帧。从这里不难看出,后退 n 协议一方面因连续发送数据帧而提高了效率,但另一方面,在重传时又必须把原来已正确传送过的数据帧进行重传(仅因这些数据帧之前有一个数据帧出了错),这种做法又使传送效率降低。由此可见,若传输信道的传输质量很差因而误码率较大时,连续测协议不一定优于停止等待协议。此协议中的发送窗口的大小为 k,接收窗口仍是 1。选择重传协议 在后退 n 协议中,接收方若发现错误帧就不再接收后续的帧,即使是正确到达的帧,这显然是一种浪费。另一种效率更高的策略是当接收方发现某帧出错后,其后继续送来的正确的帧虽然不能立即递交给接收方的高层,但接收方仍可收下来,存放在一个缓冲区中,

10、同时要求发送方重新传送出错的那一帧。一旦收到重新传来的帧后,就可以原已存于缓冲区中的其余帧一并按正确的顺序递交高层。这种方法称为选择重发 (SELECTICE REPEAT),其工作过程如图所示。显然,选择重发减少了浪费,但要求接收方有足够大的缓冲区空间。流量控制 TCP 的特点之一是提供体积可变的滑动窗口机制,支持端到端的流量控制。TCP 的窗口以字节为单位进行调整,以适应接收方的处理能力。处理过程如下:(1)TCP 连接阶段,双方协商窗口尺寸,同时接收方预留数据缓存区;(2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认;(3)发送方根据确认信息,改变窗口的尺寸,增加

11、或者减少发送未得到确认的字节流中的字节数。调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。(4)滑动窗口机制为端到端设备间的数据传输提供了可靠的流量控制机制。然而,它只能在源端设备和目的端设备起作用,当网络中间设备(例如路由器等)发生拥塞时,滑动窗口机制将不起作用。3.需求分析 课程设计题目:滑动窗口协议仿真 开发环境:Visual C+运行环境:Windows 操作系统 课程设计任务及要求:(1)程序按照滑动窗口协议实现端对端的数据传送。包括协议的各种策略,如包丢失、停等应答、超时等都应有所仿真实现。(2)显示数据传送过程中的各项具体数据。双方帧的

12、个数变化,帧序号,发送和接受速度,暂停或重传提示等。界面要求:此次课程设计要求的所有功能应可视,我们组主要是用 VC+编写的,运行在 DOS 环境下,观察发送方(sender)发送数据包到接收方(receive)时。界面应显示出双方帧个数的变化,帧序号,发送和接受速度,暂停或重传提示等,界面中必须动态显示数据帧的发送和接受情况,包括在相应的窗口详细显示相应的 ACK 和其他收发数据帧后发出的消息,以表明模拟协议的正确运作过程。在各种情况下,接受方和发送方窗口应实时显示帧的发送和接受情况,包括序号,时间戳,内容等。以及窗口的填充和清空情况。网络接口要求:两台机器或是一台机器中两个独立的线程模拟发

13、送方与接受方,接收数据的端口初始应为监听状态。发送方向接受方发起连接,成功后开始发送数据。4.概要设计 结构体定义如下:typedef enum data=1,ack,nak,tout frame_kind;代码 发送方的主要代码:void InitLine(LinkQueue*q)q-front=q-rear=NULL;int QueueEmpty(LinkQueue*q)return q-front=NULL&q-rear=NULL;frame QueueFront(LinkQueue*q)if(QueueEmpty(q)printf(队列为空!n);Sleep(SLEEPMS);exit

14、(0);return q-front-head_data;int QueueLen(LinkQueue*q)if(QueueEmpty(q)return 0;int num=0;Framenode*p=q-front;while(p!=NULL)num+;p=p-next;return num;void GetFrameFromHost(LinkQueue*q)if(QueueLen(q)=MAXPOOL)return;Framenode*p=(Framenode*)malloc(sizeof(Framenode);srand(unsigned)time(NULL);p-=rand()%MAX

15、_LENGTH;.n);Begin:WORD wVersionRequested;WSADATA wsaData;按 q 退出,其他键继续n);int kbc=getch();if(kbc=q|kbc=Q)break;printf(按任意键退出!n);while(!kbhit();Sleep(SLEEPMS);printf(谢谢使用!n);WSACleanup();closesocket(socketClient);Sleep(SLEEPMS);DWORD WINAPI ReceiveFun(LPVOID pArg)EnterCriticalSection(&gCS);else curw=De

16、Line(&QueueQ,&packetreceive,curw);试与操作说明 用户打开接收方程序时会自动等待发送方,打开发送方程序时会自动尝试连接接收方程序。当发送方程序和接收方程序都打开时,发送程序将连接接收方程序,连接成功时会有提示信息。在发送方按任意键开始模拟,发送与接受是自动进行,出现各种情况(帧丢失、帧出错、ack 丢失等)的概率都是 20%,程序执行 20 秒后会提示是否继续执行。如图:1,2 是正常情况:发送方发送数据帧-接受方收到数据帧,经检验该数据帧正确,发送确认帧-发送方收到确认帧,删除已收到确认的数据帧。3,4 是数据帧丢失:发送方发送数据帧-接受方未收到数据帧,没有

17、任何动作-发送方超时重传该数据帧。5,6 是数据帧出错:发送方发送数据帧-接收方收到数据帧,经检验该数据帧出错,发送否认帧-接受方收到否认帧,重传该数据帧。7,8 是 ack 丢失:发送方发送数据帧-接受方收到数据帧,经检验该数据帧正确,发送确认帧-发送方未收到确认帧,超时重传该数据帧。7.致谢 在设计研究和设计报告撰写过程中,感谢我的同学和老师给与的关心和帮助,从中我学会了很多,不但是专业课程的知识,还有一些编写一个vc+模拟小系统的必备的能力,谢谢你们。8.参考文献 1 Andrew S.Tandenbaum.Computer Networks(3rdEDITION)M.Prentice Hall,1996.2 胡晓峰,等编.计算机网络原理M.长沙.国防科技大学出版社.1997.3 计算机网络(第 5 版)电子工业出版社 谢希仁 编着 4 陈洛资,等.计算机网络软件设计、开发与编程M.北京:科学出版社.1994.5 高传善,等.计算机网络教程m.上海:复旦大学出版社.1996.9.附录 评语:评阅教师签名:年 月 日 成 绩

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁