计算机网络原理上机实验.docx
- 文档编号:23020202
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:27
- 大小:659.46KB
计算机网络原理上机实验.docx
《计算机网络原理上机实验.docx》由会员分享,可在线阅读,更多相关《计算机网络原理上机实验.docx(27页珍藏版)》请在冰豆网上搜索。
计算机网络原理上机实验
《计算机网络原理》实验指导书
陕西理工学院计算机科学与技术系
高凯
实验一认识网络体系结构
实验目的:
理解网络拓扑结构的概念。
了解校园网、计算机系网络实验室快速交换以太网,绘制出网络体系结构和网络拓扑图。
实验器材:
多媒体计算机,Visio2003,
学时分配:
2学时
实验类型:
验证
实验地点:
计算机系软件实验室
实验内容:
一.网络拓扑结构的概念
网络拓扑结构是指用传输媒体互连各种设备的物理布局。
将参与LAN工作的各种设备用媒体互连在一起有多种方法,实际上只有几种方式能适合LAN的工作。
目前大多数LAN使用的拓扑结构有3种:
①星行拓扑结构
②环行拓扑结构
③总线型拓扑结构
星型结构是最古老的一种连接方式,大家每天都使用的电话都属于这种结构。
环行结构的特点是,每个端用户都与两个相临的端用户相连,因而存在着点到点链路,但总是以单向方式操作。
于是,便有上游端用户和下游端用户之称。
总线拓扑结构具有费用低、数据端用户入网灵活、站点或某个端用户失效不影响其它站点或端用户通信的优点。
缺点是一次仅能一个端用户发送数据,其它端用户必须等待到获得发送权。
媒体访问获取机制较复杂。
尽管有上述一些缺点,但由于布线要求简单,扩充容易,端用户失效、增删不影响全网工作,所以是LAN技术中使用最普遍的一种。
参阅实验一素材:
visio说明书.CHM
二.学会使用Visio软件绘制网络拓扑结构图。
图1.1打开Visio软件
图1.2利用Visio软件选择建立的类别
三.参考(实验一素材中的BNetwork.vsd,DNetwork.vsd)绘制自己定义的一个网络拓扑结构图。
四.参考素材中(网吧网络拓扑结构图)绘制某网吧的网络拓扑结构。
五.参考陕西理工学院网络拓扑结构图绘制某学校的网络拓扑结构。
(实验一素材)
六.按照要求书写实验报告。
实验二物理层接口RS-232通信实验
实验目的:
理解串口通信的原理,制作零调制解调器、编制串口通讯程序、实现PC互连。
实验器材:
需要带有RS232接口的计算机,一条RS232连接线(双机互联或一台计算机的两个串口互联)。
学时分配:
2学时
实验类型:
验证
实验地点:
计算机系软件实验室
实验内容:
一.串口通信的概念:
串口是计算机上一种非常通用设备通信的协议。
大多数计算机包含两个基于RS232的串口。
串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。
同时,串口通信协议也可以用于获取远程采集设备的数据。
串口通信的概念非常简单,串口按位(bit)发送和接收字节。
尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
它很简单并且能够实现远距离通信。
比如IEEE488定义并行通行状态时,规定设备线总常不得超过20米,并且任意两个设备间的长度不得超过2米;而对于串口而言,长度可达1200米。
典型地,串口用于ASCII码字符的传输。
通信使用3根线完成:
(1)地线,
(2)发送,(3)接收。
由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。
其他线用于握手,但是不是必须的。
串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。
对于两个进行通行的端口,这些参数必须匹配:
a,波特率:
这是一个衡量通信速度的参数。
它表示每秒钟传送的bit的个数。
例如300波特表示每秒钟发送300个bit。
当我们提到时钟周期时,我们就是指波特率例如如果协议需要4800波特率,那么时钟是4800Hz。
这意味着串口通信在数据线上的采样率为4800Hz。
通常电话线的波特率为14400,28800和36600。
波特率可以远远大于这些值,但是波特率和距离成反比。
高波特率常常用于放置的很近的仪器间的通信,典型的例子就是GPIB设备的通信。
b,数据位:
这是衡量通信中实际数据位的参数。
当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。
如何设置取决于你想传送的信息。
比如,标准的ASCII码是0~127(7位)。
扩展的ASCII码是0~255(8位)。
如果数据使用简单的文本(标准ASCII码),那么每个数据包使用7位数据。
每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。
由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。
c,停止位:
用于表示单个包的最后一位。
典型的值为1,1.5和2位。
由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。
因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。
适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
d,奇偶校验位:
在串口通信中一种简单的检错方式。
有四种检错方式:
偶、奇、高和低。
当然没有校验位也是可以的。
对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。
例如,如果数据是011,那么对于偶校验,校验位为0,保证逻辑高的位数是偶数个。
如果是奇校验,校验位位1,这样就有3个逻辑高位。
高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。
这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。
可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。
用于驱动和连线的改进,实际应用中RS-232的传输长度或者速度常常超过标准的值。
RS-232只限于PC串口和设备间点对点的通信。
RS-232串口通信最远距离是50英尺。
二.串口通信基本接线方法
目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口(RS422,RS485较远),若距离较远,需附加调制解调器(MODEM)。
最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,本文只涉及到最为基本的接法,且直接用RS232相连。
2.RS232C串口通信接线方法(三线制)
首先,串口传输数据只要有接收数据针脚和发送针脚就能实现:
同一个串口的接收脚和发送脚直接用线相连,两个串口相连或一个串口和多个串口相连
同一个串口的接收脚和发送脚直接用线相连对9针串口和25针串口,均是2与3直接相连;
两个不同串口(不论是同一台计算机的两个串口或分别是不同计算机的串口)上面表格是对微机标准串行口而言的,还有许多非标准设备,如接收GPS数据或电子罗盘数据,只要记住一个原则:
接收数据针脚(或线)与发送数据针脚(或线)相连,彼些交叉,信号地对应相接,就能百战百胜。
3.串口调试中要注意的几点:
不同编码机制不能混接,如RS232C不能直接与RS422接口相连,市面上专门的各种转换器卖,必须通过转换器才能连接;
线路焊接要牢固,不然程序没问题,却因为接线问题误事;
串口调试时,准备一个好用的调试工具,如串口调试助手、串口精灵等,有事半功倍之效果;
强烈建议不要带电插拨串口,插拨时至少有一端是断电的,否则串口易损坏。
(参考实验二素材:
串口通信编程大全.pdf)
二.实验过程一:
使用Win32创建串口通讯程序
(参考实验二素材:
使用Win32创建串口通讯程序)
介绍:
这里介绍如何在Win32中处理串口。
串口通讯可以通过多种技术实现,例如:
ActiveX,I/O存取和文件操作。
这里介绍Win32平台下通过文件操作技术使用串口。
程序员可以使用MicrosoftVisualC++Version6.0所提供的kernel32.lib。
在MicrosoftWindows(2000,Me,XPand95/98)中,串口作为文件处理。
因此可以通过Windows文件创建函数打开串口。
这里不仅介绍了串口通讯,也介绍了在串口通讯应用程序中实现多任务,多任务可以使串口通讯应用程序在同一时间处理更多的任务,例如:
读数据任务,发送数据任务,GUI任务等。
以下主题描述了Win32中基本的串口操作:
初始化/打开串口通讯
∙创建端口句柄
∙获取配置(DCB)
∙修改配置
∙保存配置
∙设置通讯超时
接收/发送数据
∙发送数据
∙接收数据
∙关闭串口
设计步骤:
初始化/打开串口
打开串口的第一步是初始化或设置串口配置,目的是创建串口代理,整个过程我们都将用文件句柄作为串口代理。
创建端口句柄
串口句柄是可以被用来存取的串口对象句柄,创建串口句柄的函数是CreateFile,如下代码所示:
handlePort_=CreateFile(portName,//端口设备:
默认"COM1"
GENERIC_READ|GENERIC_WRITE,//设备打开模式:
允许读写
0,//不共享
NULL,//默认安全设置
OPEN_EXISTING,//打开方式:
打开已经存在的端口
0,//默认
NULL);//默认
如图2所示,portName="COM1":
portName示一个constchar*变量,它指定想创建串口句柄的端口名称。
图2:
CreateFile函数
获取配置
在控制设备中获取当前配置,配置中包含了用于设置串口通讯设备的参数。
可以用GetCommState函数得到当前设备配置并用指定通讯设备的当前配置填充设备控制块(DCB结构),如下代码所示:
//获取串口当前配置
if(GetCommState(handlePort_,&config_)==0)
{
AfxMessageBox("Getconfigurationporthasproblem.");
returnFALSE;
}
修改配置
当你已经在DCB结构中获取串口配置,你应该修改其中的参数,如下代码所示:
//指定用户参数
config_.BaudRate=dcb.BaudRate;//波特率
config_.StopBits=dcb.StopBits;//停止位
config_.Parity=dcb.Parity;//奇偶校验
config_.ByteSize=dcb.ByteSize;//数据位
∙DWORDBaudRate:
波特率(默认=9600)
∙BYTEStopBits:
0,1,2=1,1.5,2(默认=0)
∙BYTEParity:
0-4=无,奇,偶,标志,空格(默认=0)
∙BYTEByteSize:
数据位,4-8(默认=8)
对于典型的通讯,建议程序员使用默认值。
图3所示,Watch对话框显示了典型通讯使用的默认值。
图3:
串口配置
保存配置
下一步是将已经修改的配置保存到设备控制中。
调用SetCommStateAPI函数保存配置。
SetCommState函数设备控制块(DCB结构)配置通讯设备。
该函数重新初始化所有的硬件控制设定,但不清空输入输出队列。
代码如下所示:
if(SetCommState(handlePort_,&config_)==0)
{
AfxMessageBox("Setconfigurationporthasproblem.");
returnFALSE;
}
设置通讯超时
开启端口的最后一步是通过使用COMMTIMEOUTS数据结构和调用SetCommTimeouts函数进行通讯超时设置。
如下代码所示:
//COMMTIMEOUTS对象
COMMTIMEOUTScomTimeOut;
//接收时,两字符间最大的时延
comTimeOut.ReadIntervalTimeout=3;
//读取每字节的超时
comTimeOut.ReadTotalTimeoutMultiplier=3;
//读串口数据的固定超时
//总超时=ReadTotalTimeoutMultiplier*字节数+ReadTotalTimeoutConstant
comTimeOut.ReadTotalTimeoutConstant=2;
//写每字节的超时
comTimeOut.WriteTotalTimeoutMultiplier=3;
//写串口数据的固定超时
comTimeOut.WriteTotalTimeoutConstant=2;
//将超时参数写入设备控制
SetCommTimeouts(handlePort_,&comTimeOut);
ReadIntervalTimeout
指定通讯线上两个字符到达的最大时延,以毫秒为单位。
在ReadFile操作期间,时间周期从第一个字符接收到算起。
如果收到的两个字符之间的间隔超过该值,ReadFile操作完毕并返回所有缓冲数据。
如果ReadIntervalTimeout为0,则该值不起作用。
如果值为MAXDWORD,并且ReadTotalTimeoutConstant和ReadTotalTimeoutMultiplier两个值都为0,则指定读操作携带已经收到的字符立即返回,即使没有收到任何字符。
ReadTotalTimeoutMultiplier
指定以毫秒为单位的累积值。
用于计算读操作时的超时总数。
对于每次读操作,该值与所要读的字节数相乘。
ReadTotalTimeoutConstant
指定以毫秒为单位的常数。
用于计算读操作时的超时总数。
对于每次读操作,ReadTotalTimeoutMultiplier与所要读的字节数相乘后与该值相加。
如果ReadTotalTimeoutMultiplier和ReadTotalTimeoutConstant都为0,则在读操作时忽略总超时数。
WriteTotalTimeoutMultiplier
指定以毫秒为单位的累积值。
用于计算写操作时的超时总数。
对于每次写操作,该值与所要写的字节数相乘。
WriteTotalTimeoutConstant
指定以毫秒为单位的常数。
用于计算写操作时的超时总数。
对于每次写操作,WriteTotalTimeoutMultiplier与所要写的字节数相乘后与该值相加。
如果WriteTotalTimeoutMultiplier和WriteTotalTimeoutConstant都为0,则在写操作时忽略总超时数。
提示:
用户设置通讯超时后,如没有出错,串口已经被打开。
发送数据
串口数据发送多作为写文件处理的,程序员可以应用文件操作函数发送数据到串口。
采用WriteFile函数发送数据到串口。
if(WriteFile(handlePort_,//文件句柄
outputData,//数据缓冲区指针
sizeBuffer,//字节数
&length,NULL)==0)//接收成功发送数据长度的指针
{
AfxMessageBox("Readingofserialcommunicationhasproblem.");
returnFALSE;
}
提示:
如果函数成功,返回非0值
接收数据
串口数据接收多作为读文件处理。
程序员可以应用文件操作函数从串口接收数据。
用ReadFile函数接收串口的数据。
if(ReadFile(handlePort_,//句柄
inputData,//数据缓冲区指针
sizeBuffer,//字节数
&length,//指向已经读入的字节数
NULL)==0)//重叠I/O结构体
{
AfxMessageBox("Readingofserialcommunicationhasproblem.");
returnFALSE;
}
提示:
如果函数成功,返回非0值
关闭串口
可以调用CloseHandleAPI函数关闭串口
if(CloseHandle(handlePort_)==0)//调用该函数关闭串口
{
AfxMessageBox("PortCloseingisn''tsuccessed.");
returnFALSE;
}
提示:
如果函数成功,返回非0值。
三.实验过程二:
VB编写的串口程序
(参考实验二素材:
VB写的串口程序)
四.实验过程三:
(硬件可作为参考)
(参考实验二素材:
硬件实现-RS232通信实验.rm)
利用单片机的TXD、RXD口,使用户学会单片机串行口的使用。
实验设备及器件:
IBMPC机一台
DP-51PROC单片机综合仿真实验仪一台(本实验不需要导线)
实验内容
1.编写一段程序,利用单片机的串行口向PC机发送0X55。
2.编写一段程序,接收PC机串行口发送的0X55(ASCII码为字母U),在单片机接收到0X55的时候返回一个0X41(ASCII码为字母A)。
在PC机一端,以接收到0X41(ASCII码为字母A)为完成。
实验要求
深刻理解MAX232芯片的作用,学会使用单片机的的串行口,如果有时间用户可以做一下单片机之间的串行通讯。
实验步骤
1.用串口线连接PC机和DP-51PROC单片机综合仿真实验仪。
图3.18RS232串行口电路图
2.编写一段程序,利用单片机的串行口发送0X55,波特率为9600Bps。
(该程序不
能在DP-51PROC上进行仿真,所以只能下载,下载的操作可以参考本书的2.6节)
3.程序下载运行后可以在PC的接收软件上看见接收到“UUUUUUU…”。
4.编写一段程序,在单片机接收到0X55(‘U’)的时候返回一个0X41(‘A’)。
在
PC机一端,以接收到0X41(‘A’)为完成,波特率为9600Bps。
(该程序不能在
DP-51PROC上进行仿真,所以只能下载,下载的操作可以参考本书的2.6节)。
5.下载程序运行后,先从PC机发送一个0X55(‘A’),这时可以在PC的接收软件看见接收到“A”。
实验要求理解硬件结构,还可以先把程序编好,然后在KeilC51环境下进行软件仿真。
还要学会PC机上的串口调试软件的使用(DPFLASH也内嵌一个串口调试器)。
实验参考程序
程序1:
ORG0000H
LJMPMain
ORG00F0H
Main:
MOVSP,#60H;给堆栈指针赋初值
MOVTMOD,#20H;设置T1为方式2
MOVTH1,#0FDH;设置波特率为9600
MOVTL1,#0FDH
MOVSCON,#50H;设置串口位方式1
MOVPCON,#00H
SETBTR1;定时器1开始计数
Mainloop:
MOVSBUF,#55H;开始发送
SENDWT:
JBCTI,Mainloop
AJMPSENDWT
;
End
程序2:
ORG0000H
LJMPMain
ORG00F0H
Main:
MOVSP,#60H;给堆栈指针赋初值
MOVTMOD,#20H;设置T1为方式2
MOVTH1,#0FDH;设置波特率为9600
MOVTL1,#0FDH
MOVSCON,#50H;设置串口位方式1
MOVPCON,#00H
SETBTR1;定时器1开始计数
REC:
JBCRI,SENDWT
AJMPREC
SENDWT:
MOVA,SBUF
CLRRI
CJNEA,#55H,REC
MOVSBUF,#41H;开始发送
AJMP$
;
End
实验三小型局域网建设与基本路由配置实验
实验目的:
通过演示软件,验证距离矢量路由选择算法的功能和性能,了解动态路由算法的运行机制;通过设置不同的网络拓扑结构和线路延迟,掌握路由表的计算方法;了解路由器的基本配置方法,能够对路由器进行静态路由和动态路由的配置。
学会使用PacketTracer软件。
实验器材:
多媒体计算机,以太局域网,TCP/IP协议,距离矢量路由选择算法实验程序,PacketTracer5
学时分配:
4学时
实验类型:
综合
实验地点:
计算机系软件实验室
实验原理:
距离矢量路由基本原理
每个路由器通过测取与相邻路由器的距离,再依据与其相邻路由器交换的距离信息,间接地求出路由表;
各路由器周期性地测取相邻路由器的距离;
向相邻路由器发送它到每个目的路由器的距离表;
同时,它也接收每个邻居路由器发来的距离表;
路由器中的老路由表在计算中不被使用。
计算示例
距离矢量路由算法演示软件(试验三素材:
Router.rar)
实验内容:
一.通过演示程序,理解路由
通过演示软件(试验三素材:
RouterSY.rar):
(注:
RouterSY程序是距离取自线路往返时延的路由算法)
要求完成以下内容:
(写入试验报告)
理解距离理由算法
验证网络的路由功能;
改变线路延迟,验证该算法的自适应能力;
验证各路由器的路由表计算结果;
该算法存在什么问题?
如何改进?
设置不同的网络拓扑结构,验证网络的路由功能。
二.距离矢量路由选择算法(在局域网中仿真)(写入试验报告)
每4人一组,在局域网环境中,形成如图所示的逻辑结构。
要求完成以下内容:
1.每个主机模拟一个路由器,并获取4台主机的IP地址,以供路由选择。
辅助工具:
获得本地主机的IP地址(软件实验三素材:
getip.exe)
2.思考路由选择算法程序。
(实验三素材:
RouterU1文件夹内软件)
算法:
基本算法(请求-回送距离表-计算路由表)
3.虚拟设定线路延迟量(即,距离取自输出队列长度)。
4.4台主机同时运行(也可单机运行,参看使用说明.txt)。
5.通过每台主机的运行,验证各自的路由表和路由选择功能。
三.学会使用PacketTrace软件(写入试验报告)
(实验三素材中的PacketTrace程序文件夹里有软件安装包,大家可以拷贝)
1.打开PacketTrace软件
图3.1打开PacketTrace5.0
2.可以选择将软件汉化(选作,适合英语水平一般者)
方法:
将实验三素材languages文件夹中的文件拷贝到PacketTrace安装目录下的languages文件夹中。
在PacketTrace的选项中,语言包中选择:
chinese.ptl,即可完成软件汉化。
重新打开软件即可汉化。
图3.2PacketTrace的选项
图3.3语言包中选择:
chinese.ptl
3.练习使用PacketTracer5软件。
(参考实验三素材:
PacketTrace使用手册文件夹)
4.利用PacketTracer5软件构建设计的网络拓扑结构图。
并配置其中的网络设备。
四.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络 原理 上机 实验