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