2022年2022年计算机网络原理实验传输层可靠传输协议GBN编程实验报告 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年2022年计算机网络原理实验传输层可靠传输协议GBN编程实验报告 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年计算机网络原理实验传输层可靠传输协议GBN编程实验报告 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验七、 传输层可靠传输协议GBN 编程实验报告序号:姓名:学号:成绩指导老师:一、实验目的:1、通过编写实现一个简单可靠的数据传输协议GBN的发送和接收代码,模拟可靠数据传输2、理解 TCP协议可靠传输的差错检测、重传、累计确认、定时器的可靠传输策略。二、实验原理:在 GBN 中,发送端不需要在接收到上一个数据包的ACK 后才发送下一个数据包,而是可以连续发送数据包。在发送端发送数据包的过程中,如果接收到对应已发送的某个数据包的 NACK ,则发送端将NACK 对应的某个数据包进行重发,然后再将该数据包之后的数据包依次进行重发。三、结果分析:本次试验中采用java 语言进行程序编写代码注释:
2、(一) Sender 类import java.util.Timer; publicclass Sender extends Thread publicint windowsize=3; / 发送方窗口长度设为3 publicString data=data1,data2,data3, data4,data5,data6,data7; / 模拟七个数据包publicint sign=0,1,2,3,4,5,6; / 为7个数据包标号publicint localack=-1; / 保存最近收到的ACK public Timers litime=null ; / 定时器(这里定为2秒)publi
3、cint switches=0; / 超时标志, 1为超时publicint windowsign; / 当前窗口内待发的数据分组的序号publicint acksign=0; / 为0表示收到正确 ACK,为1表示收到错误的ACK,必须重发!名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - public Sender() windowsign=new int windowsize; / 给窗口分配指定大小的空间for (int
4、 i=0;i3;i+) windowsigni=signi; / 窗口初始化时存放前3个序号 publicvoid run() System.out.println(发送方开始发送分组数据!); publicvoid getack( int ack) System.out.println(发送方收到了 ACK, 序号为 +ack+并且开始加以确认! ); if (ack!=localack+1) System.out.println(经验证,这不是发送方正期待的ACK,立刻重发序号为 +(localack+1)+的数据分组! ); acksign=1; else localack=ack; /
5、 表示正确确认了ACK acksign=0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - publicvoid time() switches=0; / 标志初始化为 0 litime=new Timers(); Timer limit=new Timer(); limit.schedule(litime, 0,100); (二) Receiver 类import java.util.Random; publicclass
6、 Receiver extends Thread publicint lastdata; public Sender sender; publicvoid run(Sender s) sender=s; System.out.println(接收方开始接收分组数据!); void receive( int data, Sender s) sender=s; / 发送方的参数传递System.out.println(接收方收到了序号为+data+的分组! ); if (data!=0) if(data=lastdata+1) / 数据包序号校验,若连续则是正确/所期待的名师资料总结 - - -精
7、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - System.out.println(该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!); lastdata=data; / 更新本地保存的数据包序号变量respond(lastdata); / 回送该正确接收的数据包对应的ACK else System.out.println(该数据分组不是接收方所期待的,该分组将被丢弃,接收方准备回送最后接受的数据分组对应的ACK!); respo
8、nd(lastdata); / 若不是所期待的数据包则丢弃并且重发上一次的ACK else System.out.println(该数据分组正是接收方所期待的,接收方接受了它并准备回送对应的ACK!); lastdata=data; respond(lastdata); / 首次接收数据包并且回送ACK void respond( int ack) / 回送指定序号的 ACK if (sender.litime.limit20) / 判断是否超时( 2秒)ack=lastdata; / 获取本场保存的数据包序号名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - -
9、 - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - sender.getack(ack); else System.out.println(计时超时!(未丢包但是时间超过2秒)发送方准备重发序号为+ack+的数据分组! ); sender.switches=1; / 如果超时,设置超时状态并显示警告 (三) Timers 类import java.util.TimerTask; publicclass Timers extends TimerTask publicint switches; publicint l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年计算机网络原理实验传输层可靠传输协议GBN编程实验报告 2022 计算机网络 原理 实验 传输 可靠 协议 GBN 编程 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内