网管实验指导书.docx
《网管实验指导书.docx》由会员分享,可在线阅读,更多相关《网管实验指导书.docx(28页珍藏版)》请在冰点文库上搜索。
![网管实验指导书.docx](https://file1.bingdoc.com/fileroot1/2023-5/5/4a7e745d-d52b-463c-b0c8-519944c48a2a/4a7e745d-d52b-463c-b0c8-519944c48a2a1.gif)
网管实验指导书
计算机网络管理
实验报告书
姓名:
纵建辉
班级:
软1041
学号:
101842148
指导老师:
李乔
安徽工业大学工商学院
《网管技术》实验指导书
一.实验总学时(课外学时/课内学时):
10
开实验个数:
2
二.适用专业:
计算机专业
三.考核方式及办法:
在规定实验时间内完成实验要求,依据实验过程、实验结果和实验报告综合考核。
四.配套的实验教材或指导书:
自编实验指导书
五.实验项目:
实验一Windows下的SNMP
1、实验目的
了解Windows2000SNMP服务功能配置方法,使用Windows2000SNMP服务实现简单的SNMP服务功能,基本掌握snmputil工具的用法,理解SNMP工作原理
2、实验工具及环境
Windows2000系统网络环境或单机,snmputil工具软件。
3、实验计划学时
4学时上机。
4、实验内容及操作步骤
⑴阅读Windows2000提供的帮助文档,了解Windows2000提供的SNMP服务功能及其配置方法,有关命令。
⑵安装Windows2000SNMP服务功能,熟悉其安装过程和要点。
⑶配置Windows2000SNMP服务管理站和代理。
安装并配置SNMP服务器的过程:
打开"控制面板-〉添加/删除程序",选择"添加/删除Windows组件",接着在随后弹出的"Windows组件"中选择"管理和监视工具",点击下面的"详细信息",在弹出的一个"管理和监视工具"的对话框中选择"简单网络管理协议SNMP",确定后点击"下一步"就可以安装SNMP服务器了。
安装成功后在"控制面板-〉管理工具-〉服务"中能看见SNMP服务已经启动,双击"SNMPservice"就可以对其属性进行配置,通常情况下使用系统默认的配置即可,大家要记住默认情况下团体名为public。
⑷利用配置好的Windows2000SNMP服务管理站和代理,利用snmputil工具完成SNMP操作,注意命令格式中的agent如果用127.0.0.1表示本主机,如果是其他IP地址,则表示其他机器。
Snmputil是一个命令行下的软件,使用语法如下:
snmputil[get|getnext|walk]agentcommunityoid[oid...]
或snmputiltrap
(5)在检索命令中直接指明对象实例的标识符:
GetRequest(udpInDatagrams.0,udpNoPorts.0,
udpInErrors.0,udpOutDatagrams.0)
可以预期得到下面的响应:
GetResponse(udpInDatagrams.0=?
udpNoPorts.0=?
udpInErrors.0=?
udpOutDatagrams.0=?
)
请写出snmputil的命令格式,并记录实验结果。
(6)用GetNext命令检索UDP组中的4个值,直接指明对象标识符:
GetNextRequest(udpInDatagrams.0,udpNoPorts.0,
udpInErrors.0,udpOutDatagrams.0)
得到的响应:
GetResponse(udpNoPorts.0=?
udpInErrors.0=?
udpOutDatagrams.0=?
udp.udpTable.udpEntry.udpLocalAddress.0.0.0.0.161=
?
),请写出snmputil的命令格式,记录实验结果,并解释结果产生的原因。
(7)如果对udpNoPorts的访问标示符错误,则响应会不同。
发出同样的命令:
GetRequest(udpInDatagrams.0,udpNoPorts.0,
udpInErrors.0,udpOutDatagrams.0)
若用命令
snmputil
get
127.0.0.1public.1.3.6.1.2.1.7.1.0.1.3.6.1.2.1.7.2.1.1.3.6.1.2.1.7.3.0.1.3.6.1.2.1.7.4.0
得到的响应是什么,解释实验响应的结果。
(8)发出一个命令:
GetNextRequest(udpInDatagrams.2)
则得到的响应是什么,请写出snmputil的命令格式,并记录实验结果。
(9)GetNext的检索未知对象的特性可以发现MIB的结构,例如管理站不知道udp组有哪些变量,先试着发出命令:
GetNextRequest(udp)
请写出snmputil的命令格式,记录实验结果,并解释结果产生的原因。
(10)GetNext可用于有效地搜索表对象,并且方便的搜索每一行的内容,假定管理站不知道该表的行数而想检索整个表,则可以连续使用GetNext命令:
GetNextRequest(ipRouteDest,ipRouteMetric1,ipRouteNextHop)
要求能读到连续的三行内容。
请写出snmputil的命令格式,记录实验结果。
(注意:
由于每个计算机的IpRouteTable内容不同,上述的命令可能有所差异,请根据具体情况而定。
)
(11)说明下列每条snmputil命令钟walk操作响应的含义。
snmputilwalk127.0.0.1public.1.3.6.1.2.1.25.4.2.1.2
查询设备上所有正在运行的进程
snmputilwalk127.0.0.1public.1.3.6.1.4.1.77.1.2.25.1.1
查询计算机中的用户列表
snmputilwalk127.0.0.1public.1.3.6.1.2.1.25.6.3.1.2
snmputilwalk127.0.0.1public.1.3.6.1.2.1.1
遍历整个MIB-2的子树SYSTEM
(12)陷入是由代理向管理站发出的异步事件报告,不需要应答报文。
下面测试SNMP的自陷服务。
命令格式:
snmputiltrap(代理端)
snmputilget127.0.0.1liqiao1.1.0
观察屏幕的含义,有什么提示信息,记录实验结果,并解释原因?
注意:
要启用两个DOS命令窗口,而且必须在“SNMP服务属性”对话框中,将主机127.0.0.1添加为陷进目标
…
(13)测试冷启动自陷
保持snmputilTrap继续监听,然后停止snmp服务,再重新启动snmp服务,在陷阱窗口中将会收到代理的什么信息,记录实验结果并分析。
5、实验报告
要求认真书写实验报告,报告的内容包括:
实验目的、实验内容、实验步骤、实验结果等。
6 、思考问题:
(1)通过snmputil的使用,谈谈你对SNMP的主要操作有什么样的认识?
(2)SNMP使用UDP传送报文。
为什么不使用TCP?
(3)为什么SNMP的管理进程使用探询掌握全网状态属于正常情况,而代理进程用陷阱向管理进程报告属于较少发生的异常情况?
实验二网络管理软件及原型系统的实现
1、实验目的
掌握网络管理软件的初步使用,并能运用管理应用程序的设计方法,能够利用软件开发包和编程语言实现网络管理软件原型系统。
能够理论结合实践,利用编程工具,开发网络管理应用。
2、实验工具及环境
编程开发环境、Windows2000/xp系统网络环境或单机
3、实验计划学时
6学时上机。
4、实验内容
安装使用网络管理软件,并要求利用WinSNMPAPI函数、HPSNMP++软件包、AdventNetSNMPAPI4等任一种第三方软件包,开发网络管理软件原型系统,能够实现一定的网络管理功能。
具体语言可以是C++、Java等语言。
要求能够正确读取MIB库内容,并能实现get、getnext、set等操作。
5、实验报告
要求认真书写实验报告,报告的内容包括:
实验目的、实验内容、实验步骤、实验结果等。
并给出实现功能的代码,各个模块之间的关系说明,以及代码的注释。
6 、思考问题:
(1)请你说明各个网络管理软件的特点和主要功能有哪些?
(1)在开发网络管理软件原型系统的过程中遇到了那些错误,怎么解决?
(2)对于自己完成的软件功能哪些方面还有不足,有待功能继续完善?
答:
主要应具备的五大功能:
配置管理,性能管理,故障管理,安全管理,计费管理,并提供图形化的用户界面.
大型的有HPOPENVIEW,SUNNETMager,IBMtivoliNetviiew
中小型:
ciscoworks2000ciscoworks2000forwindows
特点:
HPOPENVIEW网管软件NNM以其强大的功能,先进的技术,多平台适应性,在全球网管领域得到了广泛的应用。
IBMtivoliNetviiew扩展了传统的网络管理特性,保证关键业务系统的可用性并提供更快速的系统问题解决特性。
高度实用性:
高度灵活性:
高度自动化:
高安全性:
易于使用的界面
SUNNETMager分布式管理:
协同管理:
全面支持SNMP:
具有较强的安全性:
用户工具:
应用程序接口
实验代码:
Snmpget:
importjava.lang.*;
importjava.util.*;
import.*;
importcom.adventnet.snmp.snmp2.*;
importcom.adventnet.snmp.snmp2.usm.*;
publicclasssnmpget
{
publicstaticvoidmain(Stringargs[])
{
//Takecareofgettingoptions
Stringusage=
"\nsnmpget[-d][-vversion(v1,v2,v3)][-ccommunity]\n"+
"[-pport][-rretries][-ttimeout][-uuser]\n"+
"[-aauth_protocol][-wauth_password]\n"+
"[-spriv_password][-ncontextName][-icontextID]\n"+
"[-DB_driverdatabase_driver]\n"+
"[-DB_urldatabase_url]\n"+
"[-DB_usernamedatabase_username]\n"+
"[-DB_passworddatabase_password]\n"+
"[-ppprivProtocol(DES/AES-128/AES-192/AES-256/3DES)]\n"+
"hostOID[OID]...\n";
Stringoptions[]=
{
"-d","-c","-wc","-p","-r","-t","-m",
"-v","-u","-a","-w","-s","-n","-i",
"-DB_driver","-DB_url","-DB_username","-DB_password","-pp"
};
Stringvalues[]=
{
"None",null,null,null,null,null,"None",
null,null,null,null,null,null,null,
null,null,null,null,null
};
ParseOptionsopt=newParseOptions(args,options,values,usage);
if(opt.remArgs.length<2)
{
opt.usage_error();
}
//StartSNMPAPI
SnmpAPIapi;
api=newSnmpAPI();
if(values[0].equals("Set"))
{
api.setDebug(true);
}
//Opensession
SnmpSessionsession=newSnmpSession(api);
//setremoteHost
intPORT=3;
SnmpPDUpdu=newSnmpPDU();
UDPProtocolOptionsudpOpt=newUDPProtocolOptions();
udpOpt.setRemoteHost(opt.remArgs[0]);
if(values[PORT]!
=null)
{
try
{
udpOpt.setRemotePort(Integer.parseInt(values[PORT]));
}
catch(Exceptionexp)
{
System.out.println("Invalidport:
"+values[PORT]);
System.exit
(1);
}
}
pdu.setProtocolOptions(udpOpt);
SetValuessetVal=newSetValues(pdu,values);
if(setVal.usage_error)
{
opt.usage_error();
}
Stringdriver=values[14];
Stringurl=values[15];
Stringusername=values[16];
Stringpassword=values[17];
if(driver!
=null||url!
=null||
username!
=null||password!
=null)
{
if(pdu.getVersion()!
=3)
{
System.out.println(
"DatabaseoptioncanbeusedonlyforSNMPv3.");
System.exit
(1);
}
if(driver==null)
{
System.out.println(
"TheDatabasedrivernameshouldbegiven.");
System.exit
(1);
}
if(url==null)
{
System.out.println("TheDatabaseURLshouldbegiven.");
System.exit
(1);
}
try
{
api.setV3DatabaseFlag(true);
api.initJdbcParams(driver,url,username,password);
}
catch(Exceptionexp)
{
System.out.println("UnabletoEstablishDatabaseConnection.");
System.out.println("PleasecheckthedriverNameandurl.");
System.exit
(1);
}
}
//BuildGetrequestPDU
//SnmpPDUpdu=newSnmpPDU();
pdu.setCommand(api.GET_REQ_MSG);
//addOIDs
for(inti=1;i{
SnmpOIDoid=newSnmpOID(opt.remArgs[i]);
if(oid.toValue()==null)
{
System.err.println("InvalidOIDargument:
"+opt.remArgs[i]);
}
else
{
pdu.addNull(oid);
}
}
try
{
//Opensession
session.open();
}
catch(SnmpExceptione)
{
System.err.println("Erroropeningsession:
"+e.getMessage());
System.exit
(1);
}
if(pdu.getVersion()==SnmpAPI.SNMP_VERSION_3)
{
pdu.setUserName(setVal.userName.getBytes());
try
{
USMUtils.init_v3_parameters(
setVal.userName,
null,
setVal.authProtocol,
setVal.authPassword,
setVal.privPassword,
udpOpt,
session,
false,
setVal.privProtocol);
}
catch(SnmpExceptionexp)
{
System.out.println(exp.getMessage());
System.exit
(1);
}
pdu.setContextName(setVal.contextName.getBytes());
pdu.setContextID(setVal.contextID.getBytes());
}
SnmpPDUres_pdu=null;
try
{
//SendPDUandreceiveresponsePDU
res_pdu=session.syncSend(pdu);
}
catch(SnmpExceptione)
{
System.err.println("SendingPDU"+e.getMessage());
System.exit
(1);
}
if(res_pdu==null)
{
//timeout
System.out.println("Requesttimedoutto:
"+opt.remArgs[0]);
System.exit
(1);
}
UDPProtocolOptionsudpOptions=
(UDPProtocolOptions)res_pdu.getProtocolOptions();
Stringres="ResponsePDUreceivedfrom"+
udpOptions.getRemoteAddress()+".";
//printandexit
if(res_pdu.getVersion()<3)
{
res=res+"Community="+res_pdu.getCommunity()+".";
}
System.out.println(res);
//Checkforerrorinresponse
if(res_pdu.getErrstat()!
=0)
{
System.err.println(res_pdu.getError());
}
else
{
//printtheresponsepduvarbinds
System.out.println(res_pdu.printVarBinds());
}
//closesession
session.close();
//stopapithread
api.close();
}
}
Snmpgetnext:
importjava.lang.*;
importjava.util.*;
import.*;
importcom.adventnet.snmp.snmp2.*;
importcom.adventnet.snmp.snmp2.usm.*;
publicclasssnmpgetnext
{
publicstaticvoidmain(Stringargs[])
{
//Takecareofgettingoptions
Stringusage=
"snmpgetnext[-d][-vversion(v1,v2,v3)]\n"+
"[-ccommunity][-pport][-rretries]\n"+
"[-ttimeout][-uuser][-aauth_protocol]\n"+
"[-wauth_password][-spriv_password]\n"+
"[-ncontextName][-icontextID]\n"+
"[-DB_driverdatabase_driver]\n"+
"[-DB_urldatabase_url]\n"+
"[-DB_usernamedatabase_username]\n"+
"[-DB_passworddatabase_password]\n"+
"[-ppprivProtocol(DES/AES-128/AES-192/AES-256/3DES)]\n"+
"hostOID[OID]...\n";
Stringoptions[]=
{
"-d","-c","-wc","-p","-r","-t","-m",
"-v","-u","-a","-w","-s","-n","-i",
"-DB_driver","-DB_url","-DB_username","-DB_password","-pp"
};
Stringvalues[]=