分槽ALOHA协议仿真实验 中南大学

中 南 大 学

计算机网络实验报告

———分槽ALOHA协议仿真实验

班级: 姓名: 学号: 日期:

一、 实验目的

Aloha是一个解决信道分配的简单而巧妙的方法。本次实验写的是分槽aloha,就是将时间分成离散的间隔,每个数据包只能在时间槽的起点发送。

本次实验的目的是1.掌握VB、VC++、VS或JAVA等集成开发环境编写仿真程序的方法;2.理解并掌握分槽ALOHA协议原理。

二、 实验内容与实现原理

实验内容:编写仿真程序,对一定网络环境下MAC层的多路访问协议的分槽ALOHA协议进行实现。通过仿真,学习协议采取的介质访问管理,包括介质分配和冲突解决机制,并对协议的性能与理论结果进行比较分析。

实验原理:分槽Aloha的基本思想是把信道时间分成离散的时间槽,槽长为一个帧所需的发送时间。每个站点只能在时槽开始时才允许发送。其他过程与纯ALOHA协议相同。分槽Aloha的信道效率比纯Aloha要高。分槽Aloha的易受冲突区比纯Aloha小了一半。它的重发策略是等待一段随机的时间,然后重发;如再次冲突,则再等待一段随机的时间,直到重发成功为止,但是发送的时间也是在每个时间槽的开始。

三、 实验具体设计

代码包括六个类:

AlohaThread.java,jsp_1.java,jsq.java,SendPot.java,time.java,Main.java。 Main.java是主类。主要是负责时间槽的初始化,以及多个线程的启动。

SendPot.java是发送站类。里面包含了开始发送数据的时间,时间的间隔,以及成功发送完所有数据包的发送次数。

AlohaThread.java是实现了Thread接口的类。他是Aloha的线程,run方法里面写了判断冲突的方法和数据包发送的计数方法。每一个线程都是一个SendPot的发送过程。

sq.java也是实现了Thread接口的类。他是一个计数器,每隔20秒加一,是用来计算现在已经到了第几个时间槽的。

关键代码说明

a、时间槽的计数,每隔20ms加一 while(true){ try { N = N+1; Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } }

b、发送时间以及间隔时间归并到时间槽的开始 public long getStartT() { return start/20+1; }

}

public long getDt() { return d/20+1;

四、 实验结果

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4