还剩19页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
计算机网络试验报告槐玲黄海凤程磊一实验名称仿真滑动窗口协议
二、实验要求模拟停等协议、回退n协议及选择重传协议的发送过程
三、实验环境硬件环境windowsXP系统
四、实验目的:1熟练掌握滑动窗口的状态变化2模拟停等协议、回退n协议及选择重传协议的发送过程3进一步加深对停等协议、回退n协议及选择重传协议的机理的了解
五、实验步骤
1、停等协议的发送过程发送端与接受端的窗口大小均为一,发送端一次只能发送一个数据帧,等待接受方接收到数据帧然后发送确认帧后,在发送下一帧程序界面
(1)首先设置发送帧数和丢包率设置后如图发送帧数为3,对保率为56%,即每个帧有56%的几率丢失__确定后开始发送第一帧如下图第一帧发送完,接受方接收第一帧完毕后,发送确认帧如下图开始发送第二帧第二帧丢失计时器超时后重发三帧发送完毕2.回退n协议发送过程发送端的窗口大小为1,接收端窗口大小为1发送端一次可发送多个数据,而接受端一次只能接受1个数据帧当发送帧出错时,之后的所有帧延时重发,接受端重新接受当确认帧出错时,延时重发,接受端不接受,但重发确认帧首先设置重发定时,如图开始发送数据帧第四帧丢失发送丢失帧之前的确认帧计时器超时后重发第四帧以及之前的帧发送完毕
3、选择重传协议发送过程发送端窗口与接受端窗口都大于1,当发送帧出错时,接受端可以接受此数据帧以下的数据帧,但不提交给接受端只是放入接受缓冲区首先设置重发定时开始发送第四帧丢失发送确认帧计时器超时后重发第四帧发送第四帧的确认帧发送完毕
六、源程序模块中的变量PublicRcapable%接受方的处理能力Publicsendnum%发送帧数Publicdropnum%丢包率Publicnum%纪录发送帧数PublicbiaojiAsBoolean丢包标记Publictimer%计时器Publicztimer%总用时计时器Public__5AsInteger回退n中的发送帧与确认帧标记Publicdiu5AsInteger丢包标记Publicchongfa重发定时Publics5AsBooleanPublicTAsIntegerPublicxAsInteger第几帧丢PublicqAsBoolean重发标记Form1上的代码Dimi%PrivateSubCom__nd1_ClickForm
2.ShowEndSubPrivateSubCom__nd2_ClickText
1.Text=Text
2.Text=Text
3.Text=Forsw=0To5Shape1sw.Visible=TrueNextTimer
2.Interval=300timer=0ztimer=0chongfa=IntInputBox重发定时(毫秒)x=Int5*Rnd+0diux=1丢包标记EndSubPrivateSubCom__nd3_ClickText
1.Text=Text
2.Text=Text
3.Text=Forsw=0To5Shape1sw.Visible=TrueNextTimer
3.Interval=300timer=0ztimer=0chongfa=IntInputBox重发定时(毫秒)x=Int5*Rnd+0diux=1丢包标记EndSubPrivateSubForm_Loadi=0timer=0ztimer=0Forr=0To5__r=0diur=0sr=TrueNextq=TrueEndSubPrivateSubTimer1_TimerDimdrop%Dimlent%Ifnum=0Then发送帧数Ifi=0Thenzhen.FillColor=H8000000FIfzhen.Left=0ThenIfnum0Thenzhen.Visible=TrueText
1.Text=Text
1.TextChr13Chr10Time发送方开始第sendnum-num+1帧发送timer=0EndIfIfnum=0Then发送完所有的帧得到平均延迟Text
1.Text=Text
1.TextChr13Chr10平均延迟ztimer/sendnumEndIfnum=num-1drop=Int100*Rnd+1产生随机数IfdropdropnumThen设置丢包标记biaoji=FalseElsebiaoji=TrueEndIfEndIfIfzhen.Left5000Thenzhen.Left=zhen.Left+100Ifbiaoji=FalseThenIftimer=25Then此帧丢失zhen.Visible=FalseText
1.Text=Text
1.TextChr13Chr10第sendnum-num帧丢失num=num+1EndIfEndIfEndIfIfzhen.Left=5000ThenIfzhen.Visible=TrueThen如果是丢失的帧则不显示Text
1.Text=Text
1.TextChr13Chr10TimeText
1.Text=Text
1.Text接受方接受第sendnum-num帧完毕Text
1.Text=Text
1.TextChr13Chr10Time接受方发送第sendnum-num帧确认帧EndIfi=1EndIfEndIfIfi=1ThenIfzhen.Left=100Thenzhen.FillColor=HFFzhen.Left=zhen.Left-100Ifzhen.Left=0ThenIfzhen.Visible=TrueThenText
1.Text=Text
1.TextChr13Chr10Time发送方得到第sendnum-num帧确认帧EndIfi=0EndIfEndIfEndIfElse发送完所有的帧Timer
1.Interval=0EndIftimer=timer+1ztimer=ztimer+1Text
2.Text=timerText
3.Text=ztimerEndSubPrivateSubTimer2_Timertimer=timer+1ztimer=ztimer+1Text
2.Text=timerText
3.Text=ztimerIftimer=1And__02Thens0=startgoShape101__0diu0EndIfIftimer=4And__12Thens1=startgoShape112__1diu1EndIfIftimer=7And__22Thens2=startgoShape123__2diu2EndIfIftimer=10And__32Thens3=startgoShape134__3diu3EndIfIftimer=13And__42Thens4=startgoShape145__4diu4EndIfIftimer=16And__52Thens5=startgoShape156__5diu5EndIfIfsx=FalseAndq=TrueThen丢包处理__x=2此帧不再继续传Forsk=xTo5此后的帧也不再继续返回确认帧If__sk=1ThenShape1sk.Visible=False__sk=2Ifsk=5Then最后一帧收到q=FalseEndIfEndIfNextT=timerEndIfIfztimer=T+chongfaThen重发timer=0Forsk=xTo5Shape1sk.Left=0Shape1sk.Visible=Truediusk=0__sk=0Nextx=5EndIfEndIfNextIfztimerT+chongfaThenIf__0=2And__1=2And__2=2And__3=2And__4=2And__5=2ThenTimer
2.Interval=0Text
1.Text=Text
1.TextChr13Chr10平均延迟ztimer/6EndIfEndIfEndSubPrivateFunctionstartgospAsShapenumAsIntegeriAsIntegerdiuAsIntegerAsBooleanIfi=0Thensp.FillColor=HFFFF80Ifsp.Left=0Thensp.Visible=TrueText
1.Text=Text
1.TextChr13Chr10Time发送方开始第num帧发送timer=0Ifnum=0Then发送完所有的帧得到平均延迟Text
1.Text=Text
1.TextChr13Chr10平均延迟ztimer/sendnumEndIfdrop=Int100*Rnd+1产生随机数IfdropdropnumThen设置丢包标记biaoji=FalseElsebiaoji=TrueEndIfEndIfIfsp.Left5000Thensp.Left=sp.Left+100Ifdiu=1ThenIfsp.Left=2500Then此帧丢失sp.Visible=FalseText
1.Text=Text
1.TextChr13Chr10第num帧丢失num=num+1startgo=FalseExitFunctionEndIfEndIfEndIfIfsp.Left=5000ThenIfsp.Visible=TrueAndnum=xThen如果是丢失的帧则不显示Text
1.Text=Text
1.TextChr13Chr10TimeText
1.Text=Text
1.Text接受方接受第num帧完毕Text
1.Text=Text
1.TextChr13Chr10Time接受方发送第num帧确认帧EndIfi=1EndIfEndIfIfi=1ThenIfsp.Left=100Thensp.FillColor=HFFsp.Left=sp.Left-100Ifsp.Left=0Andsp.Visible=TrueThenText
1.Text=Text
1.TextChr13Chr10Time发送方得到第num帧确认帧i=2EndIfEndIfEndIfstartgo=TrueEndFunctionPrivateSubTimer3_Timertimer=timer+1ztimer=ztimer+1Text
2.Text=timerText
3.Text=ztimerIftimer=1And__02Thens0=startgoShape101__0diu0EndIfIftimer=4And__12Thens1=startgoShape112__1diu1EndIfIftimer=7And__22Thens2=startgoShape123__2diu2EndIfIftimer=10And__32Thens3=startgoShape134__3diu3EndIfIftimer=13And__42Thens4=startgoShape145__4diu4EndIfIftimer=16And__52Thens5=startgoShape156__5diu5EndIfIfsx=FalseAndq=TrueThen丢包处理__x=2此帧不再继续传Forsk=xTo5此后的帧也不再继续返回确认帧If__sk=1ThenShape1sk.Visible=False__sk=2Ifsk=5Then最后一帧收到q=FalseEndIfEndIfNextT=timerEndIfIfztimer=T+chongfaThen重发timer=0Shape1x.Left=0Shape1x.Visible=Truediux=0__x=0x=5EndIfEndIfNextIfztimerT+chongfaThenIf__0=2And__1=2And__2=2And__3=2And__4=2And__5=2ThenTimer
3.Interval=0Text
1.Text=Text
1.TextChr13Chr10平均延迟ztimer/6EndIfEndIfEndSubForm2上的代码PrivateSubCom__nd1_Clicksendnum=Text
1.Textdropnum=Text
2.TextForm
2.HideForm
1.ShowForm
1.Timer
1.Interval=100num=sendnumEndSub
七、实验中的不足
1、回退n和选择重传中发送的帧数固定为6,应该能够设置
2、计时器超时后重传丢失的帧应该接着发送后面的帧,但是由于已经固定帧数,此处没有实现。