ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:495.80KB ,
资源ID:4404163      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4404163.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机网络选择重传协议实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机网络选择重传协议实验报告.docx

1、计算机网络选择重传协议实验报告计算机网络选择重传协议实验报告1.实验内容和实验环境描述实验内容:利用所学数据链路层原理,设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为8000bps 全双工卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度固定为256字节。实验环境: Windows764位操作系统PC机VC 6.02.协议设计数据结构: 数据帧 +=+=+=+=+=+ | KIND(1) | SEQ(1) | ACK(1) | DATA(240256) | CRC(4) | +=+=+=+=+=+ 确认

2、帧 +=+=+=+ | KIND(1) | ACK(1) | CRC(4) | +=+=+=+ 否定确认帧 +=+=+=+ | KIND(1) | ACK(1) | CRC(4) | +=+=+=+KIND:表示帧的类别ACK:ACK序列号 SEQ:帧序列号 CRC:校验和模块结构:static inc(Uchar* a)作用:使一个字节在0MAX_SEQ的范围内循环自增。参数:a,字节类型。static between(Uchar a,Uchar b,Uchar c)作用:判断当前帧是否落在发送/接收窗口内。参数:a,b,c,均为字节类型,其中两个分别为窗口的上、下界,一个为帧的编号。其中,

3、发送窗口的上界和下界分别为next_to_send和ack_expected,接收窗口的上界和下界分别为too_far和frame_expected,均定义在main函数中。static void put_frame(unsigned char *frame, int len)作用:为一个帧做CRC校验,填充至帧的尾部并将其递交给网络层发送。参数:frame,字节数组,由除padding域之外的帧内容转换而来;len,整型,为帧的当前长度。static send_frame_(Uchar fk,Uchar next_frame,Uchar frame_expected,Packet out_b

4、uf)作用:构造一个帧,并将其发送。参数:fk,字节类型,为帧的内容;next_frame,字节类型,为帧的编号;frame_expected,字节类型,为希望收到的帧的编号;out_buf,二维字节数组,为缓冲区。int main(int argc,char *argv)作用:主程式,包含选择重传协议的算法流程。参数:argc,整型,表示命令行参数的个数;argv,二维字符数组,表示参数内容。算法流程:StartSwctihPhy-layerreadyNetwork layerreadyData comingData timeoutAck timeoutGet packet()Count c

5、scFind frame-endReset ack_numMake ack frameSend_data()Get_num0Csc=0?Next_send=ack_expectedSend this framePhy ready?Send frameS_seq=frameExpect?Phy ready?breakSent framePhy_ready=1Put_packet()Send frameBreakbreakDeal with acknumberGet_num=nbufferedIn_len=1breakNbufferedmax_seqEnablenetworkDisablenetw

6、ork Y N Y NY Y Y N N(a)物理层:为数据链路层提供的服务为8000bps,270ms传播延时,10-5误码率的字节流传输通道。为了仿真实现上述服务质量的信道,利用在同一台计算机上TCP Socket完成两个站点之间的通信。由于同一台计算机上TCP通信传播时延短、传播速度快、没有误码,物理层仿真程序在发送端利用“令牌桶”算法限制发送速率以仿真8000bps线路;在接收端误码插入模块利用一个伪随机数“随机地”篡改从TCP收到的数据,使得所接收到的每个比特出现差错的概率为10-5;接收到的数据缓冲后延时270ms才提交给数据链路层程序,以仿真信道的传播时延特性。为了简化程序,省略

7、了成帧功能,数据链路层利用接口函数send_frame()和recv_frame()发送和接收一帧。(b)数据链路层:发送方和接收方都维持一个窗口,窗口内部为可以接受的序列号。接收到的数据包被缓存起来,当按正确的顺序接收完毕后再提交给网络层。ACK信息通过数据帧捎带确认的方式传递,若遇到长时间无数据帧发送,则产生ACK超时事件(ACK_TIMEOUT),主动发送空的ACK帧。若长时间未收到ACK信息,则产生数据帧超时事件(DATA_TIMEOUT),发送方自动重传未确认帧;当出现帧丢失或校验错误时,接收方会主动发送NAK帧提示发送方立即重传。数据链路层通过物理层提供的函数来利用物理层提供的服务

8、。通过get_packet()函数从网络层得到一个分组;当数据链路层成功接收到一个分组后,通过put_packet()函数提交给网络层。(c)网络层:利用数据链路层提供的“可靠的分组传输”服务,在站点A与站点B之间交换长度固定为256字节的数据分组。网络层把产生的分组交付数据链路层,并接受数据链路层提交来的数据分组。3.结果分析(1) 描述你所实现的协议软件是否实现了有误码信道环境中无差错传输功能。 我们的协议成功实现了有误码信道环境中无差错传输功能。如果收到一个损坏帧,在尚未发送否认确定的情况下,则捎带发送否定确认。并打印错误报告。如果已发送否定确认,则只打印错误报告,不重复发送否定确认。(

9、2) 程序的健壮性如何,能否可靠地长时间运行。 我们的程序成功连续运行半小时以上,并取得预定效果。具有足够的健壮性。 (3) 协议参数的选取:滑动窗口的大小,重传定时器的时限,ACK 搭载定时器的时限,这些参数是 怎样确定的?根据信道特性数据,分组层分组的大小,以及你的滑动窗口机制,给出定量分析,详细列 举出选择这些参数值的具体原因。 我们物理层提供的是字节流传输服务,使用字节填充技术成帧,分组长度为256字节。为了避免在有出错帧接收方要求重传时产生二义性,我们定义窗口大小为2n-1,并且双方的窗口大小均为(MAX_SEQ+1)/2),这样的大小足够使用又不会有过于富余的空间浪费。滑动窗口的大

10、小直接涉及到信道利用率和数据拥塞问题,若太大,数据发送过快将产生拥塞导致数据丢失,出错率增加,若太小则信道利用率降低,通过实验测试合适的窗口大小为16。重传定时器时限涉及到重传的响应时间,太小会导致频繁重传,太大则重传等待时间太久,经过我们的试验测试,选取重传定时器时限定为3000毫秒,ACK 搭载定时器的时限为1000毫秒最合适。(4)理论分析:根据所设计的滑动窗口工作机制(Go-Back-N 或者选择重传),推导出在无差错信道环境下分组层能获得的最大信道利用率;推导出在有误码条件下重传操作及时发生等理想情况下分组层能 获得的最大信道利用率。给出理论推导过程。理论推导的目的是得到信道利用率的

11、极限数据。为了简化 有误码条件下的最大利用率推导过程,可以对问题模型进行简化,比如:假定超时重传的数据帧的回馈 ACK 帧可以 100%正确传输,但是简化问题分析的这些假设必须不会对整个结论产生较大的误差。由于需要携带帧信息,所以最大信息利用率为,由于数据链路层提供的服务为8000bps,所以每传输一个字节耗时1ms,每帧的附加信息固定为10,耗时10ms,若出现转义字符还将增加时间。简化模型,假设信道上始终有数据需要传输。则在误码率为的信道上,100000个比特可发送个数据包,即每传送48个数据包将有1个出错。假设在限定时间内可以重传的该帧为正确帧,则每传送48个数据包需传送48+1+1=5

12、0次。所以信道利用率为而由于程序设计原因,当一个数据包超时后,常常需要重传多次造成信道浪费。若重传k次,则信道利用率为若重传10次,信道利用率为78.18%。若信道误码率为,则,即大约每5个帧就有一个出错,此时在ESC/FLAG模式下平均250个字符需要两倍的传输空间即极限值510,若平均每个错帧重传10次信道利用率的极值为(5) 实验结果分析:你的程序运行实际达到了什么样的效率,比对理论推导给出的结论,有没有差 距?给出原因。有没有改进的办法?如果没有时间把这些方法付诸编程实施,介绍你的方案。 由实验结果可以看出,窗口大小是16时信道利用率最高,与理论最大值最接近。与理论窗口最佳值一致。在洪

13、泛模式下,信道利用率与理论值接近。而在其他情况下负载有时较轻,所以信道利用率相比理论值较低。(6) 存在的问题:在“表 3 性能测试记录表”中给出了几种测试方案,在测试中你的程序有没有失 败,或者,虽未失败,但表现出来的性能仍有差距,你的程序中还存在哪些问题?实验顺利进行,每次测试得到的数据都比较接近,但和理论值相比信道利用率较低,这与信道的负载有关。实验结果:测试最佳窗口尺寸:窗口大小为16, DATA_TIMER 3000, ACK_TIMER 1000序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输30

14、59.396.92datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3056.895.03datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.896.44datalink afdatalink bf站点A/B的分组层都洪水式产生分组3091.393.65datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43073.275.5窗口大小为8, DATA_TIMER 3000, ACK_TIMER 10

15、00序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3057.796.92datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3055.694.83datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.996.94datalink afdatalink bf站点A/B的分组层都洪水式产生分组3095.595.05datalink af ber 1e-4datalink bf ber 1e-4站点A/

16、B的分组层都洪水式产生分组,线路误码率为10-43075.073.2窗口大小为32, DATA_TIMER 3000, ACK_TIMER 1000序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3096.996.92datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3054.893.63datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.997.04datalink afdatalink bf

17、站点A/B的分组层都洪水式产生分组3090.690.25datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43050.052.3从测试结果比较得出,窗口最佳尺寸为16;ACK搭载定时器的时限定为1000毫秒,窗口大小为16,测试重传定时器时限DATA_TIMER 2800,窗口大小为16, ACK_TIMER 1000测试最佳DATA_TIMER取值序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3055.393.92data

18、link adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3049.688.73datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.996.94datalink afdatalink bf站点A/B的分组层都洪水式产生分组3086.188.25datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43069.670.1DATA_TIMER 3000,窗口大小为16, ACK_TIMER 1000序号命令说明运行时间(

19、分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3059.396.92datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3056.895.03datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.896.44datalink afdatalink bf站点A/B的分组层都洪水式产生分组3091.393.65datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组

20、,线路误码率为10-43073.275.5DATA_TIMER 3200,窗口大小为16, ACK_TIMER 1000序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3058.096.82datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3055.890.33datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.996.94datalink afdatalink bf站点A/B的分组层都洪水式产

21、生分组3089.390.65datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43063.468.9DATA_TIMER 3400,窗口大小为16, ACK_TIMER 1000序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3056.996.82datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3054.889.93datalink afudatalink bfu无

22、误码信道,站点A和站点B的分组层都洪水式产生分组3096.896.84datalink afdatalink bf站点A/B的分组层都洪水式产生分组3087.789.85datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43068.170.3从测试结果比较得出,DATA_TIMER=3000为最佳取值重传定时器时限定为3000毫秒,窗口大小为16,测试ACK搭载定时器的时限ACK=1000ms序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误

23、码信道数据传输3059.396.92datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3056.895.03datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.996.44datalink afdatalink bf站点A/B的分组层都洪水式产生分组3095.195.45datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43073.275.5ACK=1100ms序号命令说明运行时间(分钟)Sele

24、ctive算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3068.496.92datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3067.695.63datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.996.94datalink afdatalink bf站点A/B的分组层都洪水式产生分组3095.195.05datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为

25、10-43072.576.3ACK=1200ms序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3055.996.92datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3057.194.93datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3096.996.94datalink afdatalink bf站点A/B的分组层都洪水式产生分组3095.295.15datalink af ber 1e-4da

26、talink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43074.573.3ACK=1300ms序号命令说明运行时间(分钟)Selective算法线路利用率(%)AB1datalink audatalink bu无误码信道数据传输3057.094.82datalink adatalink b站点A分组层平缓方式发出数据,站点B周期性交替发送100秒停发100秒3055.894.93datalink afudatalink bfu无误码信道,站点A和站点B的分组层都洪水式产生分组3097.096.84datalink afdatalink bf站点A/B的分组

27、层都洪水式产生分组3095.195.05datalink af ber 1e-4datalink bf ber 1e-4站点A/B的分组层都洪水式产生分组,线路误码率为10-43071.474.4从测试结果比较得出,最佳ACK搭载定时器的时限为1100ms实验截图:(最佳参数)DATA_TIMER 3000,窗口大小为16, ACK_TIMER 1100datalink audatalink budatalink adatalink bdatalink afudatalink bfudatalink afdatalink bfdatalink af ber 1e-4datalink bf ber 1e-44.研究和探索的问题1.CRC 校验能力 CRC校验码的检错能力很强,它除了能检查出离散错外,还能检查出突发错,CRC校验码具有以下检错能力:CRC校验码能检查出全部单个错;CRC校验码能检查出全部离散的二位错;CRC校验码能检查出全部奇数个错;CRC校验码能检查出全部长度小于或等于K位的突发错;CRC校验码能以1-(1/2)K-1的概率检查出长度为(K+1)位的突发错。2.由于本次试验过程的误码信道是一个比较固定的误码率,而在实际生活当中的误码率不是稳定的,可能会因为传输环境的不同,使得他的误码率波

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

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