2022年网络原理实验报告 2.pdf
《2022年网络原理实验报告 2.pdf》由会员分享,可在线阅读,更多相关《2022年网络原理实验报告 2.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持. 1文档来源为 :从网络收集整理.word 版本可编辑 . 网络原理实验报告编程模拟GBN 姓名:班级:学号:教师:1.实验目的运用各种编程语言实现基于Go-Back-N的可靠数据传输软件。PS :这里使用的是JAVA语言2.实验意义通过本实验,使学生能够对可靠数据传输原理有进一步的理解和掌握。3.实验背景Go-Back-N的有限状态机模型表示如下图所示:(a) (b) 图为 Go-Back-N的有限状态机模型( a)发送端(b)接受端4.实验步骤(1) 选择合适的编程语言编程实现基于Go-Back-N的可靠数据传输软件。(2
2、) 在实际网络环境或模拟不可靠网络环境中测试和验证自己的可靠数据传输软件。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - 文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持. 2文档来源为 :从网络收集整理.word 版本可编辑 . 5.实验环境(1) 实验语言: JAVA (2) 实验平台: Eclipse (3) 引用库函数:.net 库、 随机 (Random) 库、 计时库 (Timer)6.类概览与描
3、述(1) Sender 类: 继承于 Thread(线程)类,模拟发送方的一切功能,主要功能函数有:APublic void run()启动函数,标识开始发送数据包BSender()构造函数,分配并初始化窗口值CPublic void getack(in tack)ACK接收函数,接收接收方返回的ACK并进行验证是否为期待的ACK值(若不是,则重发)D Public void time()定时器函数,初始化定时,计时并记录超时与否的状态(2) Receiver类:继承于 Thread(线程)类,模拟接收方的一切功能,主要功能函数有:APublic void run()启动函数,标识开始等待并接
4、收数据包BVoid Receive(int data,Sender s) 数据包接收函数,功能强大!主要包括:接收数据包,验证数据包,判断与丢弃数据包等名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - 文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持. 3文档来源为 :从网络收集整理.word 版本可编辑 . CPublic void respond(int ack)ACK发送函数,发送当前接收到的最后一次正确
5、的数据包对应的ACK (3) Timers 类: 继承于 TimerTask(计时器)类,具有自定义定时与超时提醒的功能,主要功能函数有:APublic void run()启动函数,标识开始计时(这里预设的是 2 秒的时间),超时后提醒并且停止计时器BPublic Timers()构造函数, 清 0 计时器,等待下一次启动(4) GBN类: 继承于 Thread(线程)类,是主函数类,具有本程序的核心功能,这里先作一部分简单介绍,主要函数功能有:AStatic void senddelay(int x) throws InterruptedExceptionPublic Timers()随机
6、延迟函数,模拟数据包发送传输过程中的随机延迟,常用延迟值分别为: 300ms, 750ms, 1200ms, 3000ms 等BPublic static void main(String args) throws IOException, InterruptedException()主函数,功能强大,主要包含以下几大方面:开启发送端与接收端(包括计时器)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - - - - - - - 文档来源为 :从网络收集
7、整理.word 版本可编辑 .欢迎下载支持. 4文档来源为 :从网络收集整理.word 版本可编辑 . 超时或者 ACK不匹配等情况导致的发送方重新发送数据包(第一次)发送当前窗口内的数据包随机函数模拟数据包发送过程中的丢包情况实时更新与显示当前窗口内的数据包情况统计每一个数据包被发送过的次数(含重发)并最终显示出来7.代码展示与描述(一) Sender 类import ; publicclass Sender extends Thread publicint windowsize=3; / 发送方窗口长度设为3publicString data = data1 ,data2 ,data3 ,
8、 data4 ,data5 ,data6 ,data7 ; / 模拟七个数据包publicint sign =0,1,2,3,4,5,6; / 为7个数据包标号publicint localack =-1; / 保存最近收到的ACKpublic Timers litime = null ; / 定时器(这里定为2秒)publicint switches =0; / 超时标志, 1为超时publicint windowsign; / 当前窗口内待发的数据分组的序号publicint acksign =0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - -
9、- - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - 文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持. 5文档来源为 :从网络收集整理.word 版本可编辑 . / 为0表示收到正确 ACK,为1表示收到错误的ACK,必须重发!public Sender() windowsign= new int windowsize; / 给窗口分配指定大小的空间for (int i=0;i3;i+) windowsigni= sign i; / 窗口初始化时存放前3个序号 publicvoid run() 发送方
10、开始发送分组数据! ); publicvoid getack( int ack) 发送方收到了 ACK,序号为 +ack+ 并且开始加以确认!); if (ack!= localack +1) 经验证,这不是发送方正期待的ACK,立刻重发序号为+( localack +1)+ 的数据分组! ); acksign =1; else localack =ack; / 表示正确确认了ACKacksign =0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - -
11、- - - - - - - 文档来源为 :从网络收集整理.word 版本可编辑 .欢迎下载支持. 6文档来源为 :从网络收集整理.word 版本可编辑 . publicvoid time() switches =0; / 标志初始化为 0litime = new Timers(); Timer limit=new Timer(); limit.schedule(litime , 0,100); (二) Receiver 类import ; publicclass Receiver extends Thread publicint lastdata ; public Sender sender
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年网络原理实验报告 2022 网络 原理 实验 报告
限制150内