计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc

计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc

ID:62124318

大小:364.00 KB

页数:12页

时间:2021-04-17

计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc_第1页
计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc_第2页
计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc_第3页
计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc_第4页
计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc_第5页
资源描述:

《计算机网络原理实验七、传输层可靠传输协议GBN编程实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验七、传输层可靠传输协议GBN编程实验报告序号:姓名:学号:成绩指导老师:一、实验目的:1、通过编写实现一个简单可靠的数据传输协议GBN的发送和接收代码,模拟可靠数据传输2、理解TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。二、实验原理:在GBN中,发送端不需要在接收到上一个数据包的ACK后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的NACK,则发送端将NACK对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。三、结果分析:本次试验中采用java

2、语言进行程序编写代码注释:(一)Sender类importjava.util.Timer;publicclassSenderextendsThread{publicintwindowsize=3;//发送方窗口长度设为3publicString[]data={"data1","data2","data3","data4","data5","data6","data7"};//模拟七个数据包publicintsign[]={0,1,2,3,4,5,6};//为7个数据包标号publicintlocalack=-1;//保存最近收到的ACKpublic

3、Timerslitime=null;//定时器(这里定为2秒)publicintswitches=0;//超时标志,1为超时publicintwindowsign[];//当前窗口内待发的数据分组的序号publicintacksign=0;//为0表示收到正确ACK,为1表示收到错误的ACK,必须重发!publicSender(){windowsign=newint[windowsize];//给窗口分配指定大小的空间for(inti=0;i<3;i++)windowsign[i]=sign[i];//窗口初始化时存放前3个序号}publicvoi

4、drun(){System.out.println("发送方开始发送分组数据!");}publicvoidgetack(intack){System.out.println("发送方收到了ACK,序号为"+ack+"并且开始加以确认!");if(ack!=localack+1){System.out.println("经验证,这不是发送方正期待的ACK,立刻重发序号为"+(localack+1)+"的数据分组!");acksign=1;}else{localack=ack;//表示正确确认了ACKacksign=0;}}publicvoidtime

5、(){switches=0;//标志初始化为0litime=newTimers();Timerlimit=newTimer();limit.schedule(litime,0,100);}}(一)Receiver类importjava.util.Random;publicclassReceiverextendsThread{publicintlastdata;publicSendersender;publicvoidrun(Senders){sender=s;System.out.println("接收方开始接收分组数据!");}voidrecei

6、ve(intdata,Senders){sender=s;//发送方的参数传递System.out.println("接收方收到了序号为"+data+"的分组!");if(data!=0){if(data==lastdata+1){//数据包序号校验,若连续则是正确/所期待的System.out.println("该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!");lastdata=data;//更新本地保存的数据包序号变量respond(lastdata);//回送该正确接收的数据包对应的ACK}else{System.ou

7、t.println("该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ACK!");respond(lastdata);//若不是所期待的数据包则丢弃并且重发上一次的ACK}}else{System.out.println("该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!");lastdata=data;respond(lastdata);//首次接收数据包并且回送ACK}}voidrespond(intack){//回送指定序号的ACKif(sender.litime.limit<20){

8、//判断是否超时(2秒)ack=lastdata;//获取本场保存的数据包序号sender.getack(ack);}el

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。