计网实验报告(三)(4500字)

上传人:wd****9 文档编号:251091088 上传时间:2022-02-08 格式:DOCX 页数:11 大小:39.42KB
返回 下载 相关 举报
计网实验报告(三)(4500字)_第1页
第1页 / 共11页
计网实验报告(三)(4500字)_第2页
第2页 / 共11页
计网实验报告(三)(4500字)_第3页
第3页 / 共11页
计网实验报告(三)(4500字)_第4页
第4页 / 共11页
计网实验报告(三)(4500字)_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《计网实验报告(三)(4500字)》由会员分享,可在线阅读,更多相关《计网实验报告(三)(4500字)(11页珍藏版)》请在金锄头文库上搜索。

1、计网实验报告(三) (4500字)计算机网络实验报告(三)编程实现可靠数据传输原理GO-BACK-N(一)实验目的:运用各种编程语言实现基于Go-Back-N的可靠数据传输软件。通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。(二)实验内容:(1).选择合适的编程语言编程实现基于Go-Back-N的可靠数据传输软件。(2).在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。(三)实验原理:1.GBN协议含义:Go-Back-NARQ中文翻译为后退N式ARQ、回退N式ARQ。该协议对传统的自动重传请求(ARQ,AutomaticRepeatreQues)进行了改

2、进,从而实现了在接收到ACK之前能够连续发送多个数据包。在Go-Back-NARQ中,发送端不需要在接收到上一个数据包的ACK后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的NACK,则发送端将NACK对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。后退N帧ARQ的图例:后退N帧ARQ就是从出错处重发已发出过的N个帧。2.Go-Back-N的有限状态机模型表示如图所示:(a)(b)图3.1Go-Back-N的有限状态机模型(a)发送端(b)接受端(四)实验步骤:在eclipse平台编写并调试GBN模拟java程序,

3、观察三组以上实验结果,验证程序可以正确模拟GBN的发送规则。(五)实验结果:以下为随机数模拟的某次发送情况:接收方开始接收分组数据!发送方开始发送分组数据!发送方现在开始第一次发送序号为0的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为1的马上待发送的数据分组!第1号窗口里面存放的是序号为2的马上待发送的数据分组!第2号窗口里面存放的是序号为3的马上待发送的数据分组!接收方收到了序号为0的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!发送方收到了ACK,序号为0并且开始加以确认!发送方现在开始第一次发送序号为1的数据分组当前窗口内的分组情况为:第0号窗

4、口里面存放的是序号为2的马上待发送的数据分组!第1号窗口里面存放的是序号为3的马上待发送的数据分组!第2号窗口里面存放的是序号为4的马上待发送的数据分组!发送数据分组时发生延迟:1200毫秒!接收方收到了序号为1的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!发送方收到了ACK,序号为1并且开始加以确认!发送方现在开始第一次发送序号为2的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为3的马上待发送的数据分组!第1号窗口里面存放的是序号为4的马上待发送的数据分组!第2号窗口里面存放的是序号为5的马上待发送的数据分组!发送数据分组时发生延迟:750毫秒!序

5、号为2的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为2的数据分组发送数据分组时发生延迟:750毫秒!接收方收到了序号为2的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!发送方收到了ACK,序号为2并且开始加以确认!发送方现在开始第一次发送序号为3的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为4的马上待发送的数据分组!第1号窗口里面存放的是序号为5的马上待发送的数据分组!第2号窗口里面存放的是序号为6的马上待发送的数据分组!发送数据分组时发生延迟:300毫秒!接收方收到了序号为3的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送

6、对应的ACK!发送方收到了ACK,序号为3并且开始加以确认!发送方现在开始第一次发送序号为4的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为5的马上待发送的数据分组!第1号窗口里面存放的是序号为6的马上待发送的数据分组!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:750毫秒!接收方收到了序号为4的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!发送方收到了ACK,序号为4并且开始加以确认!发送方现在开始第一次发送序号为5的数据分组当前窗口内的分组情况为:第0号窗口里面存放的是序号为6的马上待发送的数据分组!第1

7、号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:1200毫秒!序号为5的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为5的数据分组序号为5的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为5的数据分组发送数据分组时发生延迟:1200毫秒!接收方收到了序号为5的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!发送方收到了ACK,序号为5并且开始加以确认!发送方现在开始第一次发送序号为6的数据分组当前窗口内的分组情况为:第0号窗口已经空了,并且后续窗口、发

8、送方没有要发送的数据分组了!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:750毫秒!序号为6的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为6的数据分组发送数据分组时发生延迟:3000毫秒!序号为6的分组在传给接收方途中发生了丢包!发送方开始重新发送序号为6的数据分组发送数据分组时发生延迟:3000毫秒!接收方收到了序号为6的分组!该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!计时超时!(未丢包但是时间超过2秒)发送方准备重发序号为6的数据分组!发送方开始

9、重新发送序号为6的数据分组发送数据分组时发生延迟:750毫秒!接收方收到了序号为6的分组!该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ACK!发送方收到了ACK,序号为6并且开始加以确认!当前窗口内的分组情况为:第0号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第1号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!第2号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!发送数据分组时发生延迟:300毫秒!序号为7的分组在传给接收方途中发生了丢包!以下是每个数据分组被发送过的次数的统计结果序号为0的数据分组被发送过的次数为:

10、1序号为1的数据分组被发送过的次数为:1序号为2的数据分组被发送过的次数为:2序号为3的数据分组被发送过的次数为:1序号为4的数据分组被发送过的次数为:1序号为5的数据分组被发送过的次数为:3序号为6的数据分组被发送过的次数为:4(六)问题总结:1.编写GBN算法,要注意的是在模拟丢包的情况下,要在接收端阻止ack的回传和在发送端发现ack超时的情况下进行该包的重发,要注意整个7个包的传送组织结构和顺序;2.进行模拟时,注意标注丢包及正确收到的flag值;3.测试时应多运行几次,观察在各种随机传送情况下的总体的发送情况,来验证是否能满足GBN协议。(七)附录:java源代码:【GBN.java

11、】importjava.util.Random;importjava.io.*;publicclassGBNextendsThreadstaticvoidsenddelay(intx)throwsInterruptedExceptionif(x=1)sleep(300);System.out.println(发送数据分组时发生延迟:300毫秒!);elseif(x=2)sleep(750);System.out.println(发送数据分组时发生延迟:750毫秒!);elseif(x=3)sleep(1200);System.out.println(发送数据分组时发生延迟:1200毫秒!);e

12、lseif(x=4)sleep(3000);System.out.println(发送数据分组时发生延迟:3000毫秒!);else;publicstaticvoidmain(Stringargs)throwsIOException,InterruptedExceptionSenders=newSender();Receiverre=newReceiver();s.start();re.run(s);/发送端启动/接收端启动/延迟处理sleep(1000);intretimes=newint7;/计算每个分组被发送的次数for(inti=0;i7;i+)retimesi=0;for(inti=

13、0;is.localack+1)/数据包顺次发送/尚有未确认的数据包,重发!System.out.println(发送方开始重新发送序号为+(s.localack+1)+的elseSystem.out.println(序号为+(s.localack+1)+的分组在传给接收方途中发生了丢包!);if(i!=s.sign.length)System.out.println();System.out.println(发送方现在开始第一次发送序号为+i+的数据分组);retimesi+;for(intk=0;k3;k+)s.windowsignk+;System.out.println();Syste

14、m.out.println(当前窗口内的分组情况为:);for(intp=0;p3;p+)if(s.windowsignp=6)System.out.println(第+p+号窗口里面存放的是序号为+s.windowsignp+的马上待发送的数据分组!);elseSystem.out.println(第+p+号窗口已经空了,并且后续窗口、发送方没有要发送的数据分组了!);System.out.println();intran=newRandom().nextInt(3);intrandelay=newRandom().nextInt(5);s.time();/计时开始(2秒时间)senddelay(randelay);if(ran!=1)re.receive(s.signi,s);else包!);System.out.println(序号为+i+的分组在传给接收方途中发生了丢System.out.println(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号