滑动窗口协议模拟程序的设计与实现.doc

上传人:b****9 文档编号:134946 上传时间:2022-10-04 格式:DOC 页数:26 大小:680.90KB
下载 相关 举报
滑动窗口协议模拟程序的设计与实现.doc_第1页
第1页 / 共26页
滑动窗口协议模拟程序的设计与实现.doc_第2页
第2页 / 共26页
滑动窗口协议模拟程序的设计与实现.doc_第3页
第3页 / 共26页
滑动窗口协议模拟程序的设计与实现.doc_第4页
第4页 / 共26页
滑动窗口协议模拟程序的设计与实现.doc_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

滑动窗口协议模拟程序的设计与实现.doc

《滑动窗口协议模拟程序的设计与实现.doc》由会员分享,可在线阅读,更多相关《滑动窗口协议模拟程序的设计与实现.doc(26页珍藏版)》请在冰豆网上搜索。

滑动窗口协议模拟程序的设计与实现.doc

长沙理工大学

《网络协议编程》课程设计报告

梁碧莹

学院计算机与通信工程专业网络工程

班级网络08-02学号200858080205

学生姓名梁碧莹指导教师王静

课程成绩完成日期2011年7月2日

课程设计任务书

计算机与通信工程学院网络工程专业

课程名称

网络协议编程

课程设计

时间

2010~2011学年第二学期18~19周

学生姓名

梁碧莹

指导老师

王静

题目

滑动窗口协议模拟程序的设计与实现

主要内容:

(1)了解网络协议编程的基本知识;

(2)了解滑动窗口协议的工作机制;

(3)使用编程语言编写一个滑动窗口协议的模拟程序,按要求实现程序。

要求:

(1)按要求编写课程设计报告书,能正确阐述设计结果。

(2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。

(3)学会文献检索的基本方法和综合运用文献能力。

(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

应当提交的文件:

(1)课程设计报告。

(2)课程设计附件(源程序、各类图纸、实验数据、运行截图等)。

课程设计成绩评定

学院计算机通信工程专业网络工程

班级网络08-02班学号200858080205

学生姓名梁碧莹指导教师王静

课程成绩完成日期2011年7月2日

指导教师对学生在课程设计中的评价

评分项目

及格

不及格

课程设计中的创造性成果

学生掌握课程内容的程度

课程设计完成情况

课程设计动手能力

文字表达

学习态度

规范要求

课程设计论文的质量

指导教师对课程设计的评定意见

综合成绩指导教师签字年月日

滑动窗口协议模拟程序的设计与实现

学生:

梁碧莹指导老师:

王静

摘要:

本文主要介绍如何根据滑动窗口协议的原理,在VisualC++的平台上设计一个滑动窗口协议模拟程序,并最终使该程序得以实现。

本次程序设计分两部分:

第一部分是发送方,第二部分是接收方。

通过发送方和接收方之间的数据帧传输模拟,学习滑动窗口协议控制流量的原理和方法,以及滑动窗口协议的工作机制。

关键词:

滑动窗口协议流量控制工作机制模拟程序

DesignandImplementationof SlidingWindow Protocol Procedures

Student:

LiangBiyingInstructor:

WangJing

Abstract:

ThispaperdescribestheprincipleofSlidingWindow ProtocolandhowtodesignandimplementaprocedureabouttheSlidingWindow Protocol.The programdesign intwoparts,oneis thesender, theotheris thereceiver.Afterall,studyingtheprincipleandmethodofhowtheSlidingWindow Protocolcontroltheflow,andhowtheSlidingWindow Protocolworksthroughthetransmissionofdatabetweenthesenderandthereceiver.

Keywords:

SlidingwindowprotocolFlowcontrolWorkingmechanismSimulationprogram

目录

1引言 1

1.1 滑动窗口协议概述 1

1.2 本次设计任务 1

2 滑动窗口协议介绍 2

2.1 滑动窗口协议工作原理 2

2.2 滑动窗口算法 2

3 设计方案及分析 5

3.1窗口机制总体设计及分析 5

3.2 协议选择及分析 6

3.3 发送方与接收方设计流程 6

4 程序测试 12

5 总结 15

5.1 程序改进与完善 15

5.2 设计总结 15

参考文献 16

附录 17

梁碧莹《滑动窗口协议模拟程序的设计与实现》第21页,共21页

1引言

随着网络的不断壮大,用户数量、信息量的需求不断增加,网络负荷越来越重。

此时,我们迫切需要一种机制来控制网络的流量,减少网络拥堵的几率,提高传输的效率。

因此,一种名为滑动窗口的协议应运而生。

滑动窗口协议,是TCP使用的一种流量控制方法。

该协议允许发送方在停止并等待确认前可以连续发送多个分组。

由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。

经测试证明,该协议还能有效地解决TCP的高协议处理开销和UDP的低可靠性之间的矛盾,

1.1滑动窗口协议概述

 滑动窗口协议,是TCP使用的一种流量控制方法。

滑动窗口协议也称为Go-Back-N(GBN)协议。

在该协议中,允许发送方传输多个分组(当有多个分组时)而不需等待确认,但它也受限于在流水账中未确认的分组数不能超过最大允许数N。

只有在接收窗口向前滑动时(与此同时也发送了确认),发送窗口才有可能向前滑动。

收发两端的窗口按照以上规律不断地向前滑动,因此这种协议又称为滑动窗口协议。

当发送窗口和接收窗口的大小都等于1时,就是停止等待协议。

当发送窗口大于1,接收窗口等于1时,就是回退N步协议。

当发送窗口和接收窗口的大小均大于1时,就是选择重发协议。

协议中规定,对于窗口内未经确认的分组需要重传。

这种分组的数量最多可以等于发送窗口的大小,即滑动窗口的大小n减去1(因为发送窗口不可能大于(n-1),起码接收窗口要大于等于1)。

1.2本次设计任务

本次的设计任务是根据滑动窗口协议的工作原理,在VisualC++6.0的平台上用C++语言编写一个基于TCP滑动窗口协议的模拟程序。

要求该程序能够实现滑动窗口协议的发送和接收数据帧功能,在此功能上体现滑动窗口协议的运作,如:

发送帧被接收与否的判断,帧超时重发,帧缓存等。

2滑动窗口协议介绍

2.1滑动窗口协议工作原理

TCP协议在工作时,如果发送端的TCP协议软件每传输一个数据分组后,必须等待接收端的确认才能够发送下一个分组,由于网络传输的时延,将有大量时间被用于等待确认,导致传输效率低下。

为此TCP在进行数据传输时使用了滑动窗口机制。

TCP滑动窗口用来暂存两台计算机间要传送的数据分组。

每台运行TCP协议的计算机有两个滑动窗口:

一个用于数据发送,另一个用于数据接收。

发送端待发数据分组在缓冲区排队等待送出。

被滑动窗口框入的分组,是可以在未收到接收确认的情况下最多送出的部分。

滑动窗口左端标志X的分组,是已经被接收端确认收到的分组。

随着新的确认到来,窗口不断向右滑动。

TCP协议软件依靠滑动窗口机制解决传输效率和流量控制问题。

它可以在收到确认信息之前发送多个数据分组。

这种机制使得网络通信处于忙碌状态,提高了整个网络的吞吐率,它还解决了端到端的通信流量控制问题,允许接收端在拥有容纳足够数据的缓冲之前对传输进行限制。

在实际运行中,TCP滑动窗口的大小是可以随时调整的。

收发端TCP协议软件在进行分组确认通信时,还交换滑动窗口控制信息,使得双方滑动窗口大小可以根据需要动态变化,达到在提高数据传输效率的同时,防止拥塞的发生。

 称窗口左边沿向右边沿靠近为窗口合拢,这种现象发生在数据被发送和确认时。

当窗口右边沿向右移动时将允许发送更多的数据,称之为窗口张开。

这种现象发生在另一端的接收进程读取已经确认的数据并释放了TCP的接收缓存时。

当右边沿向左移动时,称为窗口收缩。

HostRequirementsRFC强烈建议不要使用这种方式。

但TCP必须能够在某一端产生这种情况时进行处理。

如果左边沿到达右边沿,则称其为一个零窗口。

2.2滑动窗口算法

滑动窗口算法工作过程如下:

首先,发送方为每1帧赋一个序号(sequencenumber),记作SeqNum。

现在,我们忽略SeqNum是由有限大小的头部字段实现的事实,而假设它能无限增大。

发送方维护3个变量:

发送窗口大小(sendwindowsize),记作SWS,给出发送方能够发 送但未确认的帧数的上界; LAR表示最近收到的确认帧(lastacknowledgementreceived)的序号;LFS表示最近发送的帧(lastframesent)的序号,发送方还维持如下的不变式:

LAR-LFS≤SWS 。

图2-1滑动窗口算法的时间线

当一个确认到达时,发送方向右移动LAR,从而允许发送方发送另一帧。

同时,发送方为所发的每个帧设置一个定时器,如果定时器在ACK到达之前超时,则重发此帧。

注意:

发送方必须存储最多SWS个帧,因为在它们得到确认之前必须准备重发。

接收方维护下面3个变量:

接收窗口大小(receivewindowsize),记为RWS,给出接收方所能接收的无序帧数目的上界;LAF表示可接收帧(largestacceptableframe)的序号;LFR表示最近收到的帧(lastframereceived)的序号。

接收方也维持如下不变式:

LFS-LAR≤SWS 

图2-2接收方的滑动窗口

当一个具有顺序号SeqNum的帧到达时,接收方采取如下行动:

如果SeqNum≤LFR或SeqNum>LAF,那么帧不在接收窗口内,于是被丢弃;如果LFR<SeqNum≤LAF,那么帧在接收窗口内,于是被接收。

现在接收方需要决定是否发送一个ACK。

设SeqNumToACK表示未被确认帧的最大序号,则序号小于或等于SeqNumToACK的帧都已收到。

即使已经收到更高序号的分组,接收方仍确认SeqNumToACK的接收。

这种确认被称为是累积的(cumulative)。

然后它设置LFA=SeqNumToACK,并调整LFA=LFR+RWS。

LFR

LFR

图2-3接收方的滑动窗口

窗口协议算法有三个功能:

l在不可靠链路上可靠地传输帧

l保持帧的传输顺序

l支持流量控制

3设计方案及分析

3.1窗口机制总体设计及分析

图3-1发送方和接收方状态示意图

 设计分析:

(1)初始态,发送方没有帧发出,发送窗口前后沿相重合。

接收方0号窗口打

开,等待接收0号帧;

(2)发送方打开0号窗口,表示已发出0帧但尚未确认返回信息。

此时接收窗口状态不变;

(3)发送方打

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1