计算机网络GBN和路由算法实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
义定时与超时提醒的功能,主要功能函数有:
A.Public void run()启动函数,标识开始计时(这
里预设的是2秒的时间),超时后提醒并且停止 计时器
B.Public Timers()――构造函数,清0计时器,等待
下一次启动
(4)GBN类:继承于Thread(线程)类,是主函数类,具
有本程序的核心功能,这里先作一部分简单介绍,主 要函数功能有:
d eliveL_data (data)
make_pkt (snd pkt?ACK ,expec tedsBq仃um) udjt_send(sndpld)
(b)
图为Go-Back-N的有限状态机模型(a)发送端(b)接受端
4.
(1)选择java编程语言编程实现基于Go-Back-N的可靠数据
传输软件。
一切功能,主要功能函数有:
A.Public void run()启动函数,标识开始等待并
接收数据包
B.Void Receive(i nt data,Se nder s)数据包接收函
数,功能强大!主要包括:接收数据包,验证 数据包,判断与丢弃数据包,发送ack等
(3)Timers类:继承于TimerTask(计时器)类,具有自定
compute chksum
m ake_p kt(snd pktfnextseq num)),n extseqn umxJota;ch ksu m)udi_se nd(sndpkt(nextseq numj)
if (base==nextseqnum)
start」inn的
nextseqnum-nextseqnurm+1
lOExcepti on, In terruptedExcepti on()主函数,
功能强大,主要包含以下几大方面:
1开启发送端与接收端(包括计时器)
2超时或者ACK不匹配等情况导致的发送方
重新发送数据包
3(第一次)发送当前窗口内的数据包
4随机函数模拟数据包发送过程中的丢包
情况
5实时更新与显示当前窗口内的数据包情
计算机网络实验报告
----GBN和路由算法
GBh
1.
运用java编程语言实现基于Go-Back-N的可靠数据传输软件。
2.
通过本实验,使学生能够对可靠数据传输原理有进一步的理 解和掌握。
3.
Go-Back- N的有限状态机模型表示如下图所示:
rdt_send(data)if(nexteeqnum <base十N) t
//
接收标记,
1未接收,0已接收
public
Sen der(){
wi ndowsig n
=new int [ windowsize ];
//给窗口分配指定大小的空间
for(int i=0;i< windowsize ;i++) windowsign[i]= sign [i];
} public void run(){
1
etse
start_timer
udtjen d( sn dp kt (base)) udt_se n d(sn dp kt (base+))
udt_se n d(sn dp kt (nex tseq num-1])
(a)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)故&
ha sseq num( rcvpkt ,expectedseq num^) extra ct( rcvpktrd ata)
据包
B.Sender()――构造函数,分配并初始化窗口值
C.Public void getack( in tack)ACK接收函数,接
收接收方返回的ACK并进行验证是否为期待的ACK值(若不是,则重发)
D.Public void time()定时器函数,初始化定时,
计时并记录超时与否的状态
(2)Receiver类:继承于Thread(线程)类,模拟接收方的
//为7个数据包标号
public
int
localack =-1;
//保存最近收到的ACK
public
Timers litime =n ull ;
//定时器(这里定为2秒)
public
int
switches =0;
//超时标志,1பைடு நூலகம்超时
public
int
wi ndowsig n[];
//当前窗口内待发的数据分组的序号

6统计每一个数据包被发送过的次数(含重
发)并最终显示出来
C.static void OutputWi ndow(Se nder s)输出
当前窗口状态函数。
7•
(一)Sender类
import java.util.Timer;
public class Sen der exte nds Thread{
public
int
acksign []={1,1,1,1,1,1,1};
//为0表示收到正确ACK,为1表示收
到错误的ACK,必须重发!
public
int
sent []={1,1,1,1,1,1,1};//发送标记,1未发送,0已发送
public
int
ack no wledged[]={1,1,1,1,1,1,1};
public int windowsize =4;//发送方窗口长度设为3
public String[] data ={"data1", "data2" , "data3",
"data4" , "data5"
,"data6" , "data7" };
//模拟七个数据包
public
int
sign []={0,1,2,3,4,5,6};
(2)在实际网络环境或模拟不可靠网络环境中测试和验证
自己的可靠数据传输软件。
5.
(1)实验语言:JAVA
(2)实验平台:Eclipse
(3)引用库函数:随机(Random)库、计时库(Timer)
6.
(1)Sender类:继承于Thread(线程)类,模拟发送方的 一切功能,主要功能函数有:
A.Public void run()启动函数,标识开始发送数
A.Static void senddelay(int x) throws
In terruptedExcepti on Public Timers()随机延
迟函数,模拟数据包发送传输过程中的随机延
迟,常用延迟值分别为:300ms, 750ms, 1200ms,
3000ms等
B.Public static void main( Stri ng[] args) throws
相关文档
最新文档