数据通信实验.docx

上传人:b****0 文档编号:16879569 上传时间:2023-07-19 格式:DOCX 页数:42 大小:491.54KB
下载 相关 举报
数据通信实验.docx_第1页
第1页 / 共42页
数据通信实验.docx_第2页
第2页 / 共42页
数据通信实验.docx_第3页
第3页 / 共42页
数据通信实验.docx_第4页
第4页 / 共42页
数据通信实验.docx_第5页
第5页 / 共42页
数据通信实验.docx_第6页
第6页 / 共42页
数据通信实验.docx_第7页
第7页 / 共42页
数据通信实验.docx_第8页
第8页 / 共42页
数据通信实验.docx_第9页
第9页 / 共42页
数据通信实验.docx_第10页
第10页 / 共42页
数据通信实验.docx_第11页
第11页 / 共42页
数据通信实验.docx_第12页
第12页 / 共42页
数据通信实验.docx_第13页
第13页 / 共42页
数据通信实验.docx_第14页
第14页 / 共42页
数据通信实验.docx_第15页
第15页 / 共42页
数据通信实验.docx_第16页
第16页 / 共42页
数据通信实验.docx_第17页
第17页 / 共42页
数据通信实验.docx_第18页
第18页 / 共42页
数据通信实验.docx_第19页
第19页 / 共42页
数据通信实验.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据通信实验.docx

《数据通信实验.docx》由会员分享,可在线阅读,更多相关《数据通信实验.docx(42页珍藏版)》请在冰点文库上搜索。

数据通信实验.docx

数据通信实验

电子科技大学计算机科学与工程学院

 

标准实验报告

 

(实验)课程名称数据通信

 

电子科技大学教务处制表

 

电子科技大学

实验报告

学生姓名:

学号:

指导教师:

实验地点:

实验时间:

实验室名称:

实验一NS2的基础使用

1.实验室名称:

主楼A2412

2.实验目的:

熟悉NS模拟软件的基本使用方法。

熟悉ubuntu的操作命令和Linux桌面环境下编辑器的使用。

三.实验原理:

NS模拟传输层的UDP协议的工作

四,实验环境

Ubuntu12.04/kernel3.5

GCC4.6.3

NS-2.33

五实验步骤

使用熟悉的Linux桌面环境下的编辑器(通常使用例如VIM,Gedit),新手推荐使用Gedit。

以下例子以使用Gedit为准。

切换到用户根目录下cd~

建立自己的文件夹mkdiryour_document_name

进入刚刚新建的文件夹cdyour_document_name

新建一个TCL脚本文件gedityour_TCL_file_name.tcl

将如下代码复制粘贴到你的文件中:

#Hereisthebeginningofthiscodefile

setval(stop)5.0;#模拟器结束时间

#新建一个NS模拟对象

setns[newSimulator]

#打开NS追踪文件

settracefile[openout.trw]

$nstrace-all$tracefile

#打开NAM追踪文件

setnamfile[openout.namw]

$nsnamtrace-all$namfile

#新建6个节点

setn0[$nsnode]

setn1[$nsnode]

setn2[$nsnode]

setn3[$nsnode]

setn4[$nsnode]

setn5[$nsnode]

#建立节点之间的链路,格式解释如下

#duplex-link双向链路可选选项(duplex-link,simple-link单向链路)

#$n0$n2表明从0号节点到2号节点

#2.0Mb申明链路传输速率,可使用Mb,Kb,b

#10ms申明链路传输延迟

#DropTail队列类型

$nsduplex-link$n0$n22.0Mb10msDropTail

#申明链路队列长度

$nsqueue-limit$n0$n210

$nsduplex-link$n1$n22.0Mb10msDropTail

$nsqueue-limit$n1$n210

$nsduplex-link$n4$n32.0Mb10msDropTail

$nsqueue-limit$n4$n310

$nsduplex-link$n3$n21.0Mb20msDropTail

$nsqueue-limit$n3$n210

$nsduplex-link$n3$n52.0Mb10msDropTail

$nsqueue-limit$n3$n510

#为NAM创建节点位置描述,以第一个为例,2号节点在0号节点的右下方

$nsduplex-link-op$n0$n2orientright-down

$nsduplex-link-op$n1$n2orientright-up

$nsduplex-link-op$n4$n3orientleft-down

$nsduplex-link-op$n3$n2orientleft

$nsduplex-link-op$n3$n5orientright-down

#新建一个UDP连接

setudp0[newAgent/UDP]

#将0号节点Agent/UDP绑定,以下类似

$nsattach-agent$n0$udp0

setnull2[newAgent/Null]

$nsattach-agent$n4$null2

#将Agent/UDP及Agent/Null节点进行连接

$nsconnect$udp0$null2

#设置Agent/UDP包大小

$udp0setpacketSize_1500

#新建另一个UDP连接

setudp1[newAgent/UDP]

$nsattach-agent$n1$udp1

setnull3[newAgent/Null]

$nsattach-agent$n5$null3

$nsconnect$udp1$null3

$udp1setpacketSize_1500

#在UDP连接上新建一个CBR应用

setcbr0[newApplication/Traffic/CBR]

$cbr0attach-agent$udp0

$cbr0setpacketSize_1500

$cbr0setrate_1.0Mb

$cbr0setrandom_null

#在第1秒,$cbr0服务开始发送

$nsat1.0"$cbr0start"

#在第4秒,$cbr0服务停止发送

$nsat4.0"$cbr0stop"

#在UDP连接上新建一个CBR应用

setcbr1[newApplication/Traffic/CBR]

$cbr1attach-agent$udp1

$cbr1setpacketSize_1500

$cbr1setrate_1.0Mb

$cbr1setrandom_null

$nsat2.0"$cbr1start"

$nsat3.0"$cbr1stop"

#定义一个'finish'过程用以处理模拟结束之后需要完成的动作

procfinish{}{

#申明使用外部变量

globalnstracefilenamfileval

$nsat$val(stop)"$nsnam-end-wireless$val(stop)"

#清空追踪区域

$nsflush-trace

#关闭trace文件

close$tracefile

#关系nam文件

close$namfile

#执行系统命令namout.nam

execnamout.nam&

exit0

}

#在val(stop)时间调用finish过程

$nsat$val(stop)"finish"

$nsat$val(stop)"puts\"done\";$nshalt"

#启动ns

$nsrun

保存退出,在当前目录下,使用nsyour_TCL_file_name.tcl

观察仿真过程

六实验结果及数据分析

网络拓扑结构图和数据传输图:

由实验代码可知:

实验通过NS模拟软件建立了六个节点,各节点均采用全双工形式,两条UDP连接(数据发送方向如图),0-2,1-2,4-3,5-3的链路速率均为2.0Mb,延迟10ms,DropTail队列形式,而2-3的链路速率只有1.0Mb,延迟10ms,DropTail队列形式。

数据包包的大小为1500字节,传输速率为1.0Mb。

具体流程截图如图:

n0通过udp0向n4开始发送数据

n2通过udp1向n5发送数据:

由于在节点n2出数据传进的速率大于传出的速率,发生丢包:

n1发送数据停止,丢包现象消失:

n0发送数据停止,流程结束:

7.新的发现

在代码中修改n2-n3的数据链路的速率,可以避免丢包现象的发生。

原因是,通过增大n2-n3的传输速率可以使n2节点的数据传出速率大于传进速率,这样数据就可以很快的被转发,从而不会因数据传出过慢而产生排队,进而丢包的现象。

实验二TCP性能仿真实验

一.实验室名称:

主楼A2412

二.实验目的:

复习TCP相关性能知识;实现TCP性能仿真实验在NS上

三.实验原理:

NS仿真TCP/IP的工作原理和工作方式。

四,实验环境

Ubuntu12.04/kernel3.5

GCC4.6.3

NS-2.33

五实验步骤

修改tcp.cc代码

Gedit~/ns-allinone-2.33/ns-2.33/tcp/tcp.cc

(将窗口阈值一半变为的窗口阈值1/3——wt_tcp1.cc)

第一处:

……

if(cwnd_

slowstart=1;

if(precision_reduce_){

//halfwin=windowd()/2;//

halfwin=windowd()/3;

……

第二处:

……

}else{

inttemp;

//temp=(int)(window()/2);//

temp=(int)(window()/3);

halfwin=(double)temp;

……

第三处:

……

switch(how){

case0:

/*timeouts*/

//ssthresh_=int(window()/2);//

ssthresh_=int(window()/3);

if(ssthresh_<2)

ssthresh_=2;

cwnd_=int(wnd_restart_);

break;

case1:

……

第四处

……

case4:

/*Tahoedupacks*/

//ssthresh_=int(window()/2);//

ssthresh_=int(window()/3);

if(ssthresh_<2)

ssthresh_=2;

cwnd_=1;

break;

default:

abort();

……

返回ns根目录

执行./install执行安装(此时间较长,请耐心等待)

参照实验1代码,编写tcl代码,实现一个简单的3节点,2条链路的网络

网络如下图

这个是该网络结构对应代码

setval(stop)5.0

setns[newSimulator]

#设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文件

setf0[openout.trw]

settracefd[openwired.trw]

$nstrace-all$tracefd

setnf[openwired.namw]

$nsnamtrace-all$nf

#record过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现

procrecord{}{

globalsinkf0

setns[Simulatorinstance]

#设置经过多少时间再次调用该过程

settime0.5

#计数sink节点接受了多少数据

setbw[$sinksetbytes_]

#设置当前时间

setnow[$nsnow]

#计算网络流量并写入文件中

puts$f0"$now[expr$bw/$time*8/1000000]"

#重置计数器

$sinksetbytes_0

#循环调用该过程

$nsat[expr$now+$time]"record"

}

$nsat0.0"record"

procfinish{}{

globalnstracefdnfvalf0

$nsat$val(stop)"$nsnam-end-wireless$val(stop)"

$nsflush-trace

close$f0

close$tracefd

close$nf

execnamwired.nam&

exit0

}

setn0[$nsnode]

setn1[$nsnode]

setn2[$nsnode]

$nsduplex-link$n0$n12Mb10msDropTail

$nsduplex-link$n1$n22Mb10msDropTail

$nsqueue-limit$n0$n110

$nsqueue-limit$n1$n210

$nsduplex-link-op$n0$n1orientright

$nsduplex-link-op$n1$n2orientright

settcp[newAgent/TCP]

$nsattach-agent$n0$tcp

setsink[newAgent/TCPSink]

$nsattach-agent$n2$sink

$nsconnect$tcp$sink

setftp[newApplication/FTP]

$ftpattach-agent$tcp

$nsat0.5"$ftpstart"

$nsat4.5"$ftpstop"

$nsat$val(stop)"finish"

$nsat$val(stop)"puts\"done\";$nshalt"

$nsrun

 

保存并返回

在当前目录调用nsyour_TCL_file_name.tcl观察nam效果

在当前目录调用graphout.tr-geometry800x400用Xgraph软件观察仿真过程

六实验结果及数据分析

网络拓扑结构和数据传输图:

由实验代码可知:

实验通过NS模拟软件建立了三个节点,各节点均采用全双工形式,一条TCP连接(数据发送方向如图),0-1,1-2的链路速率均为2.0Mb,延迟10ms,DropTail队列形式。

具体流程截图如图:

tcp连接启动,进入慢启动过程:

慢启动阶段,拥塞窗口大小指数增长:

达到阈值,拥塞窗口大小线性增长:

整个过程中的网络流量如图:

 

实验三数据通信NS2仿真实验

一.实验室名称:

主楼A2412

二.实验目的:

掌握网络设计的基本方法,设计出所要求的网络结构并实现相关功能。

三.实验原理:

请按照以下要求,根据上次实验的代码,设计一个网络拓扑,并用NAM(能用XGRAPH分析更好)查看网络流量变化并分析结果。

要求如下:

网络包含4个node,各节点之间都是以全双工的链路相连(duplex-link)。

n0和n2之间链路的带宽为2Mbps,延迟为10ms,为DropTail队列方式;n1和n2之间链路带宽为2Mbps,延迟为10ms,也为DropTail队列方式;n2和n3之间链路的带宽为1.7Mbps,延迟为20ms,为RED方式(将DropTail替换成为RED)。

n0处有一个FTP的TCP流量产生器,n1处为CBR的UDP流量产生器,n3有一个接收TCP的sink和接收UDP的NULL。

节点间位置关系如下图:

四,实验环境

Ubuntu12.04/kernel3.5

GCC4.6.3

NS-2.33

五实验步骤

相关代码如下:

代码:

setval(stop)5.5

setns[newSimulator]

$nscolor1Blue

$nscolor2Red

#设置用XGRAPH软件打开的跟踪文件,通常可以一条完整链路对应一个文件

setf0[openout.trw]

settracefd[openwired.trw]

$nstrace-all$tracefd

setnf[openwired.namw]

$nsnamtrace-all$nf

#record过程用以记录仿真过程,然后通过使用XGRAPH画图软件来表现

procrecord{}{

globalsinkf0

setns[Simulatorinstance]

#设置经过多少时间再次调用该过程

settime0.5

#计数sink节点接受了多少数据

setbw[$sinksetbytes_]

#设置当前时间

setnow[$nsnow]

#计算网络流量并写入文件中

puts$f0"$now[expr$bw/$time*8/1000000]"

#重置计数器

$sinksetbytes_0

#循环调用该过程

$nsat[expr$now+$time]"record"

}

$nsat0.0"record"

procfinish{}{

globalnstracefdnfvalf0

$nsat$val(stop)"$nsnam-end-wireless$val(stop)"

$nsflush-trace

close$f0

close$tracefd

close$nf

execnamwired.nam&

exit0

}

#新建4个节点

setn0[$nsnode]

setn1[$nsnode]

setn2[$nsnode]

setn3[$nsnode]

$nsduplex-link$n0$n22.0Mb10msDropTail

$nsduplex-link$n1$n22.0Mb10msDropTail

$nsduplex-link$n2$n31.7Mb20msRED

$nsqueue-limit$n1$n210

$nsqueue-limit$n0$n210

$nsqueue-limit$n2$n310

$nsduplex-link-op$n0$n2orientright-down

$nsduplex-link-op$n1$n2orientright-up

$nsduplex-link-op$n2$n3orientright

#UDP连接

setudp[newAgent/UDP]

$nsattach-agent$n1$udp

setnull[newAgent/Null]

$nsattach-agent$n3$null

$nsconnect$udp$null

$udpsetpacketSize_1500

$udpsetfid_2

#CBR应用

#在UDP连接上新建一个CBR应用

setcbr[newApplication/Traffic/CBR]

$cbrattach-agent$udp

$cbrsetpacketSize_1500

$cbrsetrate_1.0Mb

$cbrsetrandom_null

#在第1秒,$cbr0服务开始发送

$nsat1.0"$cbrstart"

#在第4秒,$cbr0服务停止发送

$nsat4.0"$cbrstop"

#TCP连接

settcp[newAgent/TCP]

$nsattach-agent$n0$tcp

setsink[newAgent/TCPSink]

$nsattach-agent$n3$sink

$nsconnect$tcp$sink

$tcpsetfid_1

#FTP应用

setftp[newApplication/FTP]

$ftpattach-agent$tcp

$nsat0.5"$ftpstart"

$nsat4.5"$ftpstop"

$nsat$val(stop)"finish"

$nsat$val(stop)"puts\"done\";$nshalt"

$nsrun

ns_3.tcl

六实验结果集数据分析

网络拓扑结构和数据传输图:

由实验代码可知:

实验通过NS模拟软件建立了4个节点,各节点均采用全双工形式,一条TCP连接一条UDP连接(数据发送方向如图),0-1,1-2的链路速率均为2.0Mb,延迟10ms,DropTail队列形式,而2-3的链路速率只有1.7Mb,延迟20ms,RED队列形式。

udp数据包大小1500字节,发送速率为1.0Mb。

具体流程截图如图:

tcp连接发送数据:

n2节点堵塞,发生丢包,进行流量控制:

udp发送数据,n2节点堵塞,发生丢包:

tcp拥塞控制,乘性减:

整个阶段,网络流量如图,与上面的过程分析相符:

7.新的发现

TCP协议能通过拥塞控制,流量控制和分组重传等机制,来实现可靠的数据传输服务,通过观察nam可以看出,每个TCP数据报文后面都会有接收方返回的一个ACK报文,而对于不可靠数据传输的UDP协议,则接收方不会想发送方返回一个确认报文。

TCP与UDP的区别可见一斑。

实验四数据通信NS2仿真实验

一.实验室名称:

主楼A2412

二.实验目的:

掌握网络设计的基本方法,设计出所要求的网络结构并实现相关功能。

三.实验原理:

本实验使用文本处理工具gwak对仿真生成的trace文件进行解析,处理,然后用以画图或者数据分析网络的实时情况。

四,实验环境

Ubuntu12.04/kernel3.5

GCC4.6.3

NS-2.33

五实验步骤

1,使用文本编辑工具(例如gedit,vim)新建tcl文本文件

Gedityout_tcl_file_name.tcl

2,复制一下代码到你的tcl文件中:

setns[newSimulator]

$nscolor1Blue

$nscolor2Red

setnf[openout.namw]

$nsnamtrace-all$nf

setnd[openout.trw]

$nstrace-all$nd

procfinish{}{

globalnsnfnd

$nsflush-trace

close$nf

close$nd

execnamout.nam&

exit0

}

setn0[$nsnode]

setn1[$nsnode]

setn2[$nsnode]

setn3[$nsnode]

$nsduplex-link$n0$n22Mb10msDropTail

$nsduplex-link$n1$n22Mb10msDropTail

$nsdup

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2