中南大学计算机网络实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

中南大学

计算机网络实验报告

信息科学与工程学院

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

用于在多路访问信道上确定下一个使用者的协议属于数据链路层的一个子层,称为介质访问控制(Medium Access Control,MAC)子层,许多局域网都使用多路访问信道作为它的通信基础。最简单的信道分配方案是FDM(为每个站专门分配一段频率)和TDM(为每个站分配一个时槽),当站的数量比较大而且可变,或者流量具有突发性变化的时候,就需要用到纯ALOHA协议或分槽ALOHA协议。如果信道的状态可以被检测到,可以用到1-坚持型CSMA、非坚持CSMA和P-坚持CSMA等协议。本实验模拟常见的几种MAC层多路访问协议,具体实验要求及内容如下。

【实验目的】

1.掌握VB、VC++、VS或JAVA等集成开发环境编写仿真程序的方法;

2.理解并掌握分槽ALOHA协议原理。

【实验内容】

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

【编程语言和环境】

1.编程语言C/C++/C#/Java/Matlab等均可;

2.编程环境Windows(MS Visual系列,VC/VB/;)和Linux(编辑器vi+编译器

GCC)均可;

1.仿真思路

设置各站点初始产生包的时间点及产生包的时间间隔(均为随机值),得到所有站点成功发送10000个数据包的总时间以及这段时间内所有数据包的个数(包括各站点每次新产生的包以及由于冲突而重发的包),从而计算出每包时内尝试次数及其对应的吞吐量。

【具体实现(java)】

对站点的仿真:

1.设置开始发送的时间和发送的间隔:

private Random r = new Random();

// 开始发送时间

private long start;

// 时间间隔

private long d;

start = r.nextInt(1000);

d = r.nextInt(30) + 20;

2.模拟站点发送的过程:

for (int i = 0; i < 100; i++) {

a[j.getN()] = a[j.getN()] + 1;

try {

Thread.sleep(1);

// 冲突

while (a[j.getN()] > 1) {

temp = r.nextInt(5) + 1;

Thread.sleep(temp * 20);

System.out.println(sp.getNum() + "冲突");

}

System.out.println("发送成功:第" + sp.getNum() + "号第" + i + "个数据包~");

Thread.sleep(sp.getD());

} catch (Exception e) {

}

}

3.设置一个变量来记录同时发送的数据包数量,这个变量用来判断是否发生冲突。

private long t;

public void run() {

while (true) {

try {

t = t + 1;

Thread.sleep(1);

}

4.创建六个不同的站点并启动

AlohaThread at1 = new AlohaThread(sp1, j, a);

AlohaThread at2 = new AlohaThread(sp2, j, a);

AlohaThread at3 = new AlohaThread(sp3, j, a);

AlohaThread at4 = new AlohaThread(sp4, j, a);

AlohaThread at5 = new AlohaThread(sp5, j, a);

AlohaThread at6 = new AlohaThread(sp6, j, a);

at1.start();

at2.start();

at3.start();

at4.start();

at5.start();

at6.start();

测试结果:发送完毕前的部分包的状态,每个站点模拟发送100个包。

实验三Socket通信实验

网络编程是通过使用套接字来达到进程间通信目的的编程,Socket编程是网络编程的主流工具,Socket API是实现进程间通信的一种编程设施,也是一种为进程间提

供底层抽象的机制,提供了访问下层通信协议的大量系统调用和相应的数据结构。本

实验利用Socket API编写网络通信程序,具体实验要求及内容如下。

【实验目的和要求】

1.掌握VB、VC++、VS或JAVA等集成开发环境编写网络程序的方法;

2.掌握客户/服务器(C/S)应用的工作方式;

3.学习网络中进程之间通信的原理和实现方法;

4.理解单播、组播和广播的原理并比较其不同之处;

5.要求本机既是客户端又是服务器端;

【实验内容】

所编写的程序应具有如下功能:

1.具有点对点通信功能,任意客户端之间能够发送消息;

2.具有群组通信功能,客户端能够向组内成员同时发送消息,其他组成员不能收到;

3.具有广播功能,客户端能够向所有其他成员广播消息;

【编程语言和环境】

1.编程语言C/C++/C#/Java等均可;

2.编程环境Windows(MS Visual系列,VC/VB/;)和Linux(编辑器vi+编译器

GCC)均可;

【具体实现】

1.建立服务器开辟端口

server = new ServerSocket(9922);

让服务器等待客户连接

socket = server.accept();

2.建立连接

socket = new Socket("127.0.0.1", 9922);

相关文档
最新文档