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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(计网协议5及协议6程序设计报告.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

计网协议5及协议6程序设计报告.doc

1、 程序设计报告 (2011/2012学年第一学期) 题 目:数据链路层滑动窗口协议的设计与实现 专 业 网络工程 学 生 姓 名 朱瑞霖、李小明 学 生 学 号 09211517 、 09211524 日 期 2011-12-01 一、实验内容和实验目的 利用所学数据链路层原理,自己设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差

2、错双工通信。信道模型为8000bps 全双工卫星信道,信道传播时延270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度固定为256字节。通过该实验,进一步巩固和深刻理解数据链路层误码检测的CRC 校验技术,以及滑动窗口的工作机理。滑动窗口机制的两个主要目标: (1) 实现有噪音信道环境下的无差错传输; (2)充分利用传输信道的带宽。 在程序能够稳定运行并成功实现第一个目标之后,运行程序并检查在信道没有误码和存在误码两种情况下的信道利用率。为实现第二个目标,提高滑动窗口协议信道利用率,需要根据信道实际情况合理 地为协议配置工作参数,包括滑动窗口的大小和重传定时器时限

3、以及ACK 搭载定时器的时限。这些参数的设计,需要充分理解滑动窗口协议的工作原理并利用所学的理论知识,经过认真的推算,计算出最优 取值,并通过程序的运行进行验证。 通过该实验提高同学的编程能力和实践动手能力,体验协议软件在设计上各种问题和调试难度,设计在运行期可跟踪分析协议工作过程的协议软件,巩固和深刻理解理论知识并利用这些知识对系统进行优化,对实际系统中的协议分层和协议软件的设计与实现有基本的认识。 二、实验环境 Window操作系统下,Microsoft Visual C++ 6.0 集成化开发环境。 三、实验分工 协议5主要由李小明完成,协议6主要由朱瑞霖完成,两协议的

4、测试以及部分参数的设定、测试由两人共同完成。实验报告由李小明和朱瑞霖共同整理完成。 四、软件设计 1、 数据结构分析 (a) 协议五 #define inc(k)if(k

5、ib typedef struct{ unsigned char kind; /* FRAME_DATA */ unsigned char ack; //ACK number unsigned char seq; //seq bumber unsigned char data[PKT_LEN]; //净荷域 unsigned int padding; //存放CRC校验和 }frame; int between(unsigned char a,unsigned char b,unsigned char c)

6、 判断帧有没有在当前窗口中 static void put_frame(unsigned char *frame, int len) 在帧上计算添加校验和,再发送至物理层 static void send_data_frame(void) 将帧传递给物理层传送,并开始计时器计时 2、算法流程图 start switch NETWORK_LAYER_READY PHYSICAL_LAYER_READY FRAME_RECEIVED DATA_TIMEOUT ACK_TIMEOUT get_packet send_data_frame inc break

7、 break break break break phl_ready = 1 resend one frame send ack frame stop_timer frame_expected? start_ack_timer Y N (nbuffered < MAX_SEQ && phl_ready enable_network_layer(); disable_network_layer(); Y N (b)协议六 #define MAX_SEQ 31 MAX_SEQ定义了最大窗口序列 #define DATA_TIMER 3800 DATA

8、TIMER定义了超时重发的定时器时间 #define ACK_TIMER 1100 ACK_TIMER定义了ACK定时器超时重发时间 #define NR_BUFS 16 NR_BUFS定义了缓冲 #define inc(k)if(k

9、 padding; }Frame; 为了体现出网络层数据包与帧结构的不同,对帧结构进行再次封装。不过由于程序没用 到网络层方面的东西,因此网络层包结构只包含帧结构字段,不包含其他字段。 其定义如下: typedef struct{ unsigned char info[PKT_LEN]; }packet; PKT_LEN帧结构最大长度。 #pragma comment(lib,"Protocol.lib") 该句用来导入静态链接库Protocol.lib bool no_nak=true; 该全局变量用来判断表示没有NAK,可以用来提高发送效率。 stati

10、c int phl_ready = 0; 静态变量用来标示物理层状态,物理层Ready用phl_ready=1表示,未准备好用0表示。 Event表示到达事件类型,arg打印日志时候库函数用到,len用来保存返回的包长度。 int event,arg,len=0; 帧变量r定义如下: Frame r; 其他定义。 seq_nr next_frame_to_send; seq_nr ack_expected; seq_nr frame_expected; seq_nr too_far; seq_nr nbuffered;

11、 packet out_buf[NR_BUFS]; packet in_buf[NR_BUFS]; bool arrived[NR_BUFS]; next_frame_to_send标示下一个要发送的帧的序列号。 ack_expected标示下一个要接受的ack序列号。 frame_expected标示下一个要接受的帧的序列号。 too_far用做判断。 nbuffered定义当前Buffer位置,防止越界,超过NR_BUFS长度时限制从网络层接收包。 out_buf和in_buf分别表示out包和in包缓冲。其最大值均标示为NR_BUFS。 arrive

12、d一维数组用用来表示Arrived情况,到达为1,否则为0. 2、 模块结构分析 static int between(seq_nr a,seq_nr b,seq_nr c); 判断序列号是否在窗口内。 static void send_data(); 根据发送数据类型是“FRAME_DATA”,“FRAME_NAK”,“FRAME_ACK” 来发送不同的数据,函数参数参考程序源码,在此不列出。 static void put_frame(unsigned char *frame, int len) 进行CRC校验,同时添加特定的标识字段然后上交给网络层。 3、 算法流程(见

13、下页) 五、实验测试 Go-back-N性能测试记录表 序号 命令 说明 运行时间(秒) 效率(%) 备注 A B 1 datalink au datalink bu 无误码信道数据传输 1800 52 70.5 发送窗口大小7、定时器时长2800 2 datalink a datalink b 站点A分组层平缓方式发出数据,站点B周期性交替“发送100秒,停发100秒” 1800 41.5 57.5 同上 3 datalink afu datalink bfu 无误码信道,站点A和站点B的分组层都洪水式产生分组

14、1800 96.9 96.9 同上 4 datalink af datalink bf 站点A/B的分组层都洪水式产生分组 1800 74.5 74.7 同上 5 datalink af –ber 1e-4 datalink bf –ber 1e-4 站点A/B的分组层都洪水式产生分组,线路误码率设为10-4 1800 25.8 26.2 同上 6 datalink a datalink b 站点A分组层平缓方式发出数据,站点B周期性交替“发送100秒,停发100秒” 1800 27.1 43.4 定时器时长设为2000

15、 第一组测试(最优:窗口大小MAX_SEQ=7、定时器DATA_TIMER=2800) (1)、au&bu (2)a&b (3)afu&bfu (4)af&bf (5) af&bf 误码率为1e-4 第二组测试(窗口大小MAX_SEQ=7、定时器DATA_TIMER=2000) (6)a&b 窗口大小7、定时器时长2000 SLECTIVE REPEAT性能测试记录表 序号 命令 说明 运行时间(秒) 效率(%) 备注 A B 1 Slective au Slective bu 无误码信道

16、数据传输 1800 53.3 96.97 发送窗口大小16、DATA_TIMER=3800 ACK_TIMER=1100 2 Slective a Slective b 站点A分组层平缓方式发出数据,站点B周期性交替“发送100秒,停发100秒” 1800 52.3 94.0 同上 3 Slective afu Slective bfu 无误码信道,站点A和站点B的分组层都洪水式产生分组 1800 96.97 96.97 同上 4 Slective af Slective bf 站点A/B的分组层都洪水式产生分组 1800 95.0

17、94.6 同上 5 Slective af –ber 1e-4 Slective bf –ber 1e-4 站点A/B的分组层都洪水式产生分组,线路误码率设为10-4 1800 60.6 59.5 同上 6 Slective a Slective b 站点A分组层平缓方式发出数据,站点B周期性交替“发送100秒,停发100秒” 1800 46.5 85.5 发送窗口大小16、DATA_TIMER=2000 ACK_TIMER=1100 7 Slective a Slective b 站点A分组层平缓方式发出数据,站点B周期性交替“发送100秒,停

18、发100秒” 1800 52 70.5 发送窗口大小16、DATA_TIMER=5000 ACK_TIMER=1100 第一组测试(当前最大窗口数是MAX_SEQ=31,即发送窗口为NR_BUFS=(MAX_SEQ+1)/2=16,发送数据帧定时器时长为DATA_TIMER=3800,ACK等待定时器时长为ACK_TIMER=1100。) (1) au&bu (2) a&b (3) afu&bfu (4)af&bf (5) af&bf 误码率为1e-4 第二组:(当前最大窗口数是MAX_SEQ=31,即发送窗口为NR_

19、BUFS=(MAX_SEQ+1)/2=16,发送数据帧定时器时长为DATA_TIMER=2000,ACK等待定时器时长为ACK_TIMER=1100。) 第三组:(当前最大窗口数是MAX_SEQ=31,即发送窗口为NR_BUFS=(MAX_SEQ+1)/2=16,发送数据帧定时器时长为DATA_TIMER=5000,ACK等待定时器时长为ACK_TIMER=1100。) a&b 六、实验结果分析 (1) 描述你所实现的协议软件是否实现了有误码信道环境中无差错传输功能。 能实现。因为采用了CRC校验和重传技术,如果有错误的话能得以被发现和纠正。 (2) 程序的

20、健壮性如何,能否可靠地长时间运行。 程序的健壮性较好,在高负荷和高误码率等条件下均能工作。只是负荷不同,效率不一样。 (3) 协议参数的选取:滑动窗口的大小,重传定时器的时限,这些参数是怎样确定的?根据信道特性数据,分组层分组的大小,以及你的滑动窗口机制,给出定量分析详细列举出选择这些参数值的具体 实验中物理层提供了一种字节流传输服务,使用字节填充技术成帧,分组长度固定为256字节。滑动窗口的大小直接涉及到信道利用率和数据拥塞问题,若太小,将导致信道利用率过低,信道中长时间没有数据传送;若太大,数据发送过快,将造成接收方数据链路层来不及处理,数据物理层及信道发生拥塞现象导致数据丢失

21、出错率增加。滑动窗口的大小N,信道传输时延a,发送率c,帧大小f应满足关系式:N>=[2a+2*(f/c)]/(f/c),同时通过实际测试的结果分析得到合适的N值,防止N过大,最终值设为7。重传计时器的时限涉及到重传的响应时间,若太大,将导致重传等待的时间过久;若太小,将导致较为频繁的重传,两种情况均将导致信道利用率下降。通过实际测试,设为2800ms左右时效率最高。协议六与协议五确定方法类似。 (4)理论分析:根据所设计的滑动窗口工作机制(Go-Back-N 或者选择重传),推导出在无差错信道环境下分组层能获得的最大信道利用率;推导出在有误码条件下重传操作及时发生等理想情况下分组层能获得

22、的最大信道利用率。给出理论推导过程。理论推导的目的是得到信道利用率的极限数据。为了简化有误码条件下的最大利用率推导过程,可以对问题模型进行简化,比如:假定超时重传的数据帧的回馈ACK 帧可以100%正确传输,但是简化问题分析的这些假设必须不会对整个结论产生较大的误差。 因为需要携带帧讯息,所以最大的信息利用率约为256/(256+4+4+2)*100%=96.24%。因为信道的最大比特率为8000bps,所以每传输一个字节耗时1ms,每帧的附加讯息固定为10,耗时10ms,若出现转义字符,将可能增加时间。假设信道上始终有数据需要传送,在10-5错误率的信道上,在100000个比特中可以传送1

23、00000/(260*8)=48个数据包,则每48个数据包将有一个出错,假设每出错一次,在限定时间内可以重传该帧为正确帧,则每传送48个数据包需传输48+1+1=50次,此时信道利用率为48*250/(50*260+10)*100%=92.24%,但由于程序设计的原因,当一个数据包超时后,往往需重复多次传输给数据包造成信道的浪费。若重传k次,则信道利用率为48*250/[(49+k)*260+10]*100%,其中,平均重传10次,信道利用率约为78.18%。在10-4错误率的信道上,出错率提高到大约每5个帧就有1个出错,在ESC/FLAG模式下信道利用率的极限值为4*250/(6*510+1

24、0)*100%=32.57%。 (5) 实验结果分析:你的程序运行实际达到了什么样的效率,比对理论推导给出的结论,有没有差距?给出原因。有没有改进的办法?如果没有时间把这些方法付诸编程实施,介绍你的方案。 在洪泛模式下,利用率与分析值大致一样。其它情况下,由于不总是负载很重,所以利用率会低一点 (7) 存在的问题:在“表3 性能测试记录表”中给出了几种测试方案,在测试中你的程序有没有失败,或者,虽未失败,但表现出来的性能仍有差距,你的程序中还存在哪些问题? 程序没有失败,稳定性也很好。但是测试性能距离老师给的参数还存在一些差距,估计在参数方面可能存在更优的取值。 七、总结和心得体会 经过这次实验,我们对数据链路层几个重要的协议有了更深入的了解。对GobackN和选择重传的效率有了具体化的分析和定位。其次编程能力也有了提高,特别是对基于别人提供的封装接口的应用能力有了很大提高。用别人提供的库,首先要对动态库的实现有具体了解,要忽略实现的具体细节等等。还有打印日志对程序调试与性能分析也很重要,特别是调BUG的时候,输出某些变量的值和日志的信息对于调试程序有很大帮助。 如饮茶水,冷暖自知。有努力就会有收获的。大三咯。Come on!

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服