2022年2022年计算机网络选择重传协议实验报告 .pdf
《2022年2022年计算机网络选择重传协议实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机网络选择重传协议实验报告 .pdf(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、计算机网络选择重传协议实验报告名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 21 页 -1.实验内容和实验环境描述实验内容:利用所学数据链路层原理,设计一个滑动窗口协议,在仿真环境下编程实现有噪音信道环境下两站点之间无差错双工通信。信道模型为 8000bps 全双工卫星信道,信道传播时延 270毫秒,信道误码率为10-5,信道提供字节流传输服务,网络层分组长度固定为256字节。实验环境:Windows7 64 位操作系统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:校验和名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 21 页 -模块结构: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,Uc
4、har frame_expected,Packet out_buf)作用:构造一个帧,并将其发送。参数:fk,字节类型,为帧的内容;next_frame,字节类型,为帧的编号;frame_expected,字节类型,为希望收到的帧的编号;out_buf,二维字节数组,为缓冲区。int main(int argc,char*argv)作用:主程式,包含选择重传协议的算法流程。参数:argc,整型,表示命令行参数的个数;argv,二维字符数组,表示参数内容。算法流程:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 21 页 -YNYNYYYNNStartSwctihPhy-layer
5、readyNetwork layerreadyData comingData timeoutAck timeoutGet packet()Count cscFind 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 ack
6、numberGet_num=nbufferedIn_len=1breakNbufferedmax_seqEnablenetworkDisablenetwork名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 21 页 -(a)物理层:为数据链路层提供的服务为8000bps,270ms 传播延时,10-5 误码率的字节流传输通道。为了仿真实现上述服务质量的信道,利用在同一台计算机上TCP Socket完成两个站点之间的通信。由于同一台计算机上TCP通信传播时延短、传播速度快、没有误码,物理层仿真程序在发送端利用“令牌桶”算法限制发送速率以仿真8000bps 线路;在接收端误码插入模块
7、利用一个伪随机数“随机地”篡改从 TCP收到的数据,使得所接收到的每个比特出现差错的概率为10-5;接收到的数据缓冲后延时270ms 才提交给数据链路层程序,以仿真信道的传播时延特性。为了简化程序,省略了成帧功能,数据链路层利用接口函数send_frame()和 recv_frame()发送和接收一帧。(b)数据链路层:发送方和接收方都维持一个窗口,窗口内部为可以接受的序列号。接收到的数据包被缓存起来,当按正确的顺序接收完毕后再提交给网络层。ACK信息通过数据帧捎带确认的方式传递,若遇到长时间无数据帧发送,则产生 ACK超时事件(ACK_TIMEOUT),主动发送空的ACK帧。若长时间未收到A
8、CK信息,则产生数据帧超时事件(DATA_TIMEOUT),发送方自动重传未确认帧;当出现帧丢失或校验错误时,接收方会主动发送NAK 帧提示发送方立即重传。数据链路层通过物理层提供的函数来利用物理层提供的服务。通过get_packet()函数从网络层得到一个分组;当数据链路层成功接收到一个分组后,通过put_packet()函数提交给网络层。(c)网络层:利用数据链路层提供的“可靠的分组传输”服务,在站点A 与站点 B之间交换长度固定为256 字节的数据分组。网络层把产生的分组交付数据链路层,并接受数据链路层提交来的数据分组。3.结果分析(1)描述你所实现的协议软件是否实现了有误码信道环境中无
9、差错传输功能。我们的协议成功实现了有误码信道环境中无差错传输功能。如果收到一个损坏帧,在尚未发送否认确定的情况下,则捎带发送否定确认。并打印错误报告。如果已发送否定确认,则只打印错误报告,不重复发送否定确认。(2)程序的健壮性如何,能否可靠地长时间运行。我们的程序成功连续运行半小时以上,并取得预定效果。具有足够的健壮性。(3)协议参数的选取:滑动窗口的大小,重传定时器的时限,ACK 搭载定时器的时限,这些参数是怎样确定的?根据信道特性数据,分组层分组的大小,以及你的滑动窗口机制,给出定量分析,详细列举出选择这些参数值的具体原因。我们物理层提供的是字节流传输服务,使用字节填充技术成帧,分组长度为
10、256 字节。为了避免在有出错帧接收方要求重传时产生二义性,我们定义窗口大小为2n-1,并且双方的窗口大小均为(MAX_SEQ+1)/2),这样的大小足够使用又不会有过于富余的空间浪费。滑动窗口的大小直接涉及到信道利用率和数据拥塞问题,若太大,数据发送过快将产生拥塞导致数据丢失,出错率增加,若太小则信道利用率降低,通过实验测试合适的窗口大小为16。重传定时器时限涉及到重传的响应时间,太小会导致频繁重传,太大则重传等待时间太久,经过我们的试验测试,选取重传定时器时限定为3000 毫秒,ACK 搭载定时器的时限为1000 毫秒最合适。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 2
11、1 页 -(4)理论分析:根据所设计的滑动窗口工作机制(Go-Back-N 或者选择重传),推导出在无差错信道环境下分组层能获得的最大信道利用率;推导出在有误码条件下重传操作及时发生等理想情况下分组层能获得的最大信道利用率。给出理论推导过程。理论推导的目的是得到信道利用率的极限数据。为了简化有误码条件下的最大利用率推导过程,可以对问题模型进行简化,比如:假定超时重传的数据帧的回馈ACK 帧可以100%正确传输,但是简化问题分析的这些假设必须不会对整个结论产生较大的误差。由于需要携带帧信息,所以最大信息利用率为96.24%100%244256256,由于数据链路层提供的服务为8000bps,所以
12、每传输一个字节耗时1ms,每帧的附加信息固定为 10,耗时 10ms,若出现转义字符还将增加时间。简化模型,假设信道上始终有数据需要传输。则在误码率为-510的信道上,100000 个比特可发送488*260100000个数据包,即每传送48 个数据包将有1 个出错。假设在限定时间内可以重传的该帧为正确帧,则每传送48 个数据包需传送48+1+1=50 次。所以信道利用率为92.24%100%*10260*50250*48)(而由于程序设计原因,当一个数据包超时后,常常需要重传多次造成信道浪费。若重传 k 次,则信道利用率为%100*10260*)49250*48k(若重传10 次,信道利用率
13、为78.18%。若信道误码率为-410,则4.88*26010000,即大约每5 个帧就有一个出错,此时在ESC/FLAG模式下平均250 个字符需要两倍的传输空间即极限值510,若平均每个错帧重传10 次信道利用率的极值为40.71%100%*10510*6250*5)((5)实验结果分析:你的程序运行实际达到了什么样的效率,比对理论推导给出的结论,有没有差距?给出原因。有没有改进的办法?如果没有时间把这些方法付诸编程实施,介绍你的方案。由实验结果可以看出,窗口大小是16 时信道利用率最高,与理论最大值最接近。与理论窗口最佳值一致。在洪泛模式下,信道利用率与理论值接近。而在其他情况下负载有时
14、较轻,所以信道利用率相比理论值较低。(6)存在的问题:在“表3 性能测试记录表”中给出了几种测试方案,在测试中你的程序有没有失败,或者,虽未失败,但表现出来的性能仍有差距,你的程序中还存在哪些问题?实验顺利进行,每次测试得到的数据都比较接近,但和理论值相比信道利用率较低,这与信道的负载有关。名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 21 页 -实验结果:测试最佳窗口尺寸:窗口大小为 16,DATA_TIMER 3000,ACK_TIMER 1000 序号命令说明运 行时 间(分钟)Selective 算法线路利用率(%)AB1datalink au datalink bu无
15、误码信道数据传输3059.396.92datalink a datalink b站点A 分组层平缓方式发出数据,站点 B周期性交替发送 100 秒停发 100 秒3056.895.03datalink afu datalink bfu无误码信道,站点 A 和站点B 的分组层都洪水式产生分组3096.896.44datalink af datalink bf站点 A/B 的分组层都洪水式产生分组3091.393.65datalink af ber 1e-4datalink bf ber 1e-4站点 A/B 的分组层都洪水式产生分组,线路误码率为10-43073.275.5窗口大小为 8,DAT
16、A_TIMER 3000,ACK_TIMER 1000 序号命令说明运 行时 间(分钟)Selective 算法线路利用率(%)AB1datalink au datalink bu无误码信道数据传输3057.796.92datalink a datalink b站点A 分组层平缓方式发出数据,站点 B周期性交替发送 100 秒停发 100 秒3055.694.83datalink afu datalink bfu无误码信道,站点 A 和站点B 的分组层都洪水式产生分组3096.996.94datalink af datalink bf站点 A/B 的分组层都洪水式产生分组3095.595.05
17、datalink af ber 1e-4datalink bf ber 1e-4站点 A/B 的分组层都洪水式产生分组,线路误码率为10-43075.073.2名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 21 页 -窗口大小为 32,DATA_TIMER 3000,ACK_TIMER 1000 序号命令说明运 行时 间(分钟)Selective 算法线路利用率(%)AB1datalink au datalink bu无误码信道数据传输3096.996.92datalink a datalink b站点A 分组层平缓方式发出数据,站点 B周期性交替发送 100 秒停发 100
18、秒3054.893.63datalink afu datalink bfu无误码信道,站点 A 和站点B 的分组层都洪水式产生分组3096.997.04datalink af datalink bf站点 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_TIM
19、ER 1000 测试最佳 DATA_TIMER 取值序号命令说明运 行时 间(分钟)Selective 算法线路利用率(%)AB1datalink au datalink bu无误码信道数据传输3055.393.92datalink a datalink b站点A 分组层平缓方式发出数据,站点 B周期性交替发送 100 秒停发 100 秒3049.688.73datalink afu datalink bfu无误码信道,站点 A 和站点B 的分组层都洪水式产生分组3096.996.94datalink af datalink bf站点 A/B 的分组层都洪水式产生分组3086.188.25da
20、talink af ber 1e-4datalink bf ber 1e-4站点 A/B 的分组层都洪水式产生分组,线路误码率为10-43069.670.1名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 21 页 -DATA_TIMER 3000,窗口大小为 16,ACK_TIMER 1000 序号命令说明运 行时 间(分钟)Selective 算法线路利用率(%)AB1datalink au datalink bu无误码信道数据传输3059.396.92datalink a datalink b站点A 分组层平缓方式发出数据,站点 B周期性交替发送 100 秒停发 100 秒3
21、056.895.03datalink afu datalink bfu无误码信道,站点 A 和站点B 的分组层都洪水式产生分组3096.896.44datalink af datalink bf站点 A/B 的分组层都洪水式产生分组3091.393.65datalink af ber 1e-4datalink bf ber 1e-4站点 A/B 的分组层都洪水式产生分组,线路误码率为10-43073.275.5DATA_TIMER 3200,窗口大小为 16,ACK_TIMER 1000 序号命令说明运 行时 间(分钟)Selective 算法线路利用率(%)AB1datalink au da
22、talink bu无误码信道数据传输3058.096.82datalink a datalink b站点A 分组层平缓方式发出数据,站点 B周期性交替发送 100 秒停发 100 秒3055.890.33datalink afu datalink bfu无误码信道,站点 A 和站点B 的分组层都洪水式产生分组3096.996.94datalink af datalink bf站点 A/B 的分组层都洪水式产生分组3089.390.65datalink af ber 1e-4datalink bf ber 1e-4站点 A/B 的分组层都洪水式产生分组,线路误码率为10-43063.468.9名
23、师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 21 页 -DATA_TIMER 3400,窗口大小为 16,ACK_TIMER 1000 序号命令说明运 行时 间(分钟)Selective 算法线路利用率(%)AB1datalink au datalink bu无误码信道数据传输3056.996.82datalink a datalink b站点A 分组层平缓方式发出数据,站点 B周期性交替发送 100 秒停发 100 秒3054.889.93datalink afu datalink bfu无误码信道,站点 A 和站点B 的分组层都洪水式产生分组3096.896.84datal
24、ink af datalink 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 au datalink bu无误码信道数据传输3059.396.92datalink a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年计算机网络选择重传协议实验报告 2022 计算机网络 选择 协议 实验 报告
限制150内