西安电子科技大学网络管理大作业Word下载.docx
- 文档编号:21037462
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:18
- 大小:224.65KB
西安电子科技大学网络管理大作业Word下载.docx
《西安电子科技大学网络管理大作业Word下载.docx》由会员分享,可在线阅读,更多相关《西安电子科技大学网络管理大作业Word下载.docx(18页珍藏版)》请在冰豆网上搜索。
6.控制和维护访问权限
7.支持密钥管理
8.维护和检查安全日志
二、对比GETNEXT和GETBULK如何遍历下列MIB树(右图为设备上的实例),写出详细的通信过程和内容。
假例根节点的编号为1,A、B、T、Z编号分别为1、2、3、4,E的编号为1,C1、C2、C3编号为1、2、3,G。
当getnext,(1.2.0);
response(1.3.1.1.1)=>
1
当getBulk(non-repeator=1,max-repetitons=3;
1.2.0;
1.3.1.1.1;
1.3.1.2.1;
1.3.1.3.1);
response(1.3.1.1.1=>
1;
1.3.1.1.2=>
2;
1.3.1.1.3=>
3;
1.3.1.1.4=>
4;
1.3.1.2.2=>
100;
1.3.1.2.3=>
1000;
1.3.1.2.4=>
10000;
1.3.1.3.2=>
y;
1.3.1.3.3=>
z;
1.3.1.3.4=>
w;
)
GetBulkRequest操作的基本工作过程如下:
GetBulkRequest在变量绑定字段中放入一个(N+R)个变量名的清单。
对于前N个变量名,查询方式与GetNextRequest相同。
即,对清单中的每个变量名,返回它的下一个变量名和它的值,如果没有后继变量,则返回原变量名和一个endOfMibView的值。
GetBulkRequestPDU有两个其他PDU所没有的字段,non-repeaters和max-repetitions。
non-repeaters字段指出只返回一个后继变量的变量数。
max-repetitions字段指出其他的变量应返回的最大的后继变量数。
为了说明算法,我们定义:
L=变量绑定字段中的变量名数量
N=只返回一个后继变量的变量名数
R=返回多个后继变量的变量名数
M=最大返回的后继变量数
在上述变量之间存在以下关系:
N=MAX[MIN(non-reperters,L),0]
M=MAX[max-repetitions,0]
R=L-N
如果N大于0,则前N个变量与GetNextRequest一样被应答。
如果R大于0并且M大于0,则对应后面的R个变量,返回M个后继变量。
即,对于每个变量:
·
获得给定变量的后继变量的值;
获得下一个后继变量的值;
反复执行上一步,直至获得M个对象实例。
如果在上面的过程中的某一点,已经没有后继变量,则返回endOfMibView值,在变量名处,返回最后一个后继变量,如果没有后继变量,则返回请求中的变量名。
利用这个规则,能够产生的name-value对的数量是N+(M×
R)。
后面的(M×
R)对在应答PDU中的顺序可描述为:
fori:
=1toMdo
forr:
=1toRdo
retrievei-thsuccessorof(N+r)-thvariable
即,返回的后继变量是一行一行的,而不是先返回第一个变量的所有后继变量,再返回第二个变量的所有后继变量,等等。
三、SNMPv2针对SNMPv1不足的改进有哪些具体内容?
具体地说,SNMPv2对SNMPv1的增强分为:
1、管理信息结构;
2、协议操作;
3、管理器和管理器(M2M)之间通信的能力。
SNMPv2的SMI再几个方面扩展了SNMPv1的SMI。
首先,用于定义对象类型的宏扩展了几类新的数据类型,并增强了对象的操作能力,一个最显著的变化时增强了对表对象的行创建和删除的约定,这个约定是受RMON的启发增加的。
在协议操作上的变化是增加了两个新的PDU类型,即GetBulkRequest和InformRequest,其中GetBulkRequest允许管理器更有效地检索大量的数据,它特别适合于检索一个表对象的多行内容,当需要用一个请求原语提取大量数据(如读取某个表的内容)时就可以调用它以提高效率。
SNMPv2也引进管理进程和管理进程之间的通信进行状况报告,为此增加了一条原语InformRequest,并把GetResponse简化成更加合理的名称Response。
Trap报文则已改为SNMPv2-Trap,并与所有的协议PDU具有相同的格式。
另外,SNMPv2还定义了两个MIB库,一个是SNMPv2MIB,它包含了SNMPv2协议操作的基本流量信息,也包含与SNMPv2的管理器或代理的配置相关的其他信息,相当于SNMPv1的MIB-2的SNMP组的内容。
另一个是Manager-to-Manager(M2M)MIB,它提供了对分布式管理结构的支持,其功能类似于RMONMIB,它可用于中间管理器向上级管理器报告中间管理器或其下属的代理系统的活动情况。
第二部分‐‐MIB设计文档
SCORE-MIBDEFINITIONS:
:
=BEGIN
IMPORTS
enterprises,Counter
FROMRFC1155-SMI
OBJECT-TYPE
FROMRFC-1212;
zhaojiaweiOBJECTIDENTIFIER:
={enterprises50000}
String:
=OCTETSTRING
scoreOBJECTIDENTIFIER:
={zhaojiawei1}
nmsOBJECTIDENTIFIER:
={score1}
——课程名称
courseNameOBJECT-TYPE
SYNTAXString(SIZE(0..255))
ACCESSread-only
STATUSmandatory
DESCRIPTION
"
Thecoursename."
:
={nms1}
——教师姓名
teacherNameOBJECT-TYPE
Theteachername."
={nms2}
——成绩表(Table)
scoreTableOBJECT-TYPE
SYNTAXSEQUENCEOFScoreEntry
ACCESSnot-accessible
Scoretable."
={nms3}
——定义ScoreEntry这个数据类型
scoreEntryOBJECT-TYPE
SYNTAXScoreEntry
Scoreentry."
INDEX{studentNo}
={scoreTable1}
ScoreEntry:
=
SEQUENCE{
studentNo
String,
studentName
studentGender
INTEGER,
studentScore
INTEGER
}
studentNoOBJECT-TYPE
SYNTAXString(SIZE(0..10))
Studentnumber."
={scoreEntry1}
studentNameOBJECT-TYPE
Studentname."
={scoreEntry2}
studentGenderOBJECT-TYPE
SYNTAXINTEGER{male
(1),female
(2)}
Studentgender."
={scoreEntry3}
studentScoreOBJECT-TYPE
SYNTAXINTEGER(0..100)
ACCESSread-write
Studentscore."
={scoreEntry4}
——scoreStat
scoreStatOBJECTIDENTIFIER:
={nms4}
scoreAverageOBJECT-TYPE
SYNTAXString
Scoreaverage."
={scoreStat1}
countUnderSixtyOBJECT-TYPE
SYNTAXCounter
Score<
60."
={scoreStat2}
countBetweenSixtyToSeventyOBJECT-TYPE
Scorebetween60-70."
={scoreStat3}
countBetweenSeventyToEightyOBJECT-TYPE
Scorebetween70-80."
={scoreStat4}
countBetweenEightyToNinetyOBJECT-TYPE
Scorebetween80-90."
={scoreStat5}
countBetweenNinetyToHundredOBJECT-TYPE
Scorebetween90-100."
={scoreStat6}
——结束
END
结果图:
遇到的困难:
最开始由于不了解mib包的命名规则,命名成了学号导致mib包无法导入,最后上网检索知道不能以数字开头,然后便讲学号改成了zhaojiawei
第三部分‐‐发挥部分
基于Linux环境的简单网络管理协议的实现
一、程序实现
1、系统结构与实现
管理结构示意图
Manager为LINUX操作系统平台(放置编写的简单的SNMP应用软件),Agent为具有SNMP代理的设备。
在Manager端利用C语言和SNMP协议编写一个简单的应用程序(可以发送GETGET-NEXTSET等命令),对放在网络各处的安装了SNMP代理的设备进行查询。
在SNMP协议中,Manager端和Agent端的通信是通过SNMP协议数据单元实现的它们之间可以有三种类型的交互:
Manager端执行GET或GET—NEXT操作从代理Agent获得信息;
Manager端执行SET操作对代理Agent的属性进行设置:
代理Agent端向Manager端发送陷阱异步通知信息告诉管理者关于自己的一些事件。
2、SNMP相关协议和编码格式
一、管理信息库(MIB)
管理信息库(MIB)规定了网络代理所保存的数据项目、数据类型,以及在每个数据项目中允许的操作,通过对这些数据项目的存取访问来实现网络管理的5大功能:
配置管理、性能管理、失效管理、计费管理、安全管理
Internet标准的管理信息库(MIB)是数形结构的数据库,其结构见图
MIB-I的树形结构
MIB对象定义:
DEFINITIONS:
=BEGIN
IMPORTS
mgmt,OBJECT-TYPE,NetworkAddress,IpAddress,Counter,Gauge,TimeTicks
mibOBJECTIDENTIFIER:
={mgmt1}
systemOBJECTIDENTIFIER:
={mgmt2}
interfaceOBJECTIDENTIFIER:
={mgmt3}
atOBJECTIDENTIFIER:
={mgmt4}
ipOBJECTIDENTIFIER:
={mgmt5}
icmpOBJECTIDENTIFIER:
={mgmt6}
tcpOBJECTIDENTIFIER:
={mgmt7}
udpOBJECTIDENTIFIER:
={mgmt8}
egpOBJECTIDENTIFIER:
={mgmt9}
ASN.1描述文法:
基本编码规则(BER)
标签字段
类型
标签号
整数
02
对象表示符(Old)
06
比特串(BitString)
03
序列(sequence)
30
8位位组(Octet
String)
04
同类序列
空值(null)
05
类型对应的标签号
二、SNMP协议数据单元(PDUProtocolDataUnit)的格式
在SNMP中信息按照SNMP消息的形式在管理站和代理之间交换
PDUtype
Request-id
SNMPPDU
SNMP消息
0
variable-bindings
GetRequestPDU,GetNextRequestPDU,SetRequestPDU报文格式
Request-id
error-status
error-index
variable-bindings
GetResponsePDU
Enterprise
agent-addr
Generic-trap
spcific-trap
time-stamp
variable-bi
ndings
TrapPDU
Name1
Value1
name2
value2
…
namen
valuen
variable-bindings
图二、SNMP格式
GetRequestPDU的定义(其它PUD定义类似,下面省略)
GetRequest-PDU:
=
IMPLICITSEQUENCE{
request-idRequestID,--always0
error-statusErrorStatus,--always0
error-indexErrorIndex,--always0
VarBindList
其中Request-ID定义为4个8位段整数(用于使响应和查询相匹配),Errorstatus和Errorindex是请求中为0的单个8位段整数。
VarBindlist为对象表示列表,ASN.1规定VarBindlist是一系列成对的对象和数值
SNMPv1操作原语类型的ASN.1表示
操作原语类型ASN.1表示
GetRequest0xA0(160)
GetNextRequset0xA1(161)
GetRqsponse0xA2(162)
SetRequest0xA3(163)
Trap0xA4(164)
SNMP报文格式定义
SNMP报文由2部分组成,即协议头(ProtocolHeader)和数据区域(Dataarea)协议头由
协议“版本”和SNMPcommunity(团体字)组成。
数据区域由若干协议数据单元PDU组成,每个PDU由一个“请求”(网络管理者发送)或一个“响应”(网络代理发送)组成。
报文格式见图
协议版本
SNMPcommunity
DataArea(PDU)
SNMP报文格式
SNMP报文格式的ASN.1表示法:
SNMPDEFINITIONS:
=BFGIN
Message:
=SEQUENCE{
version--version-1forthisRFC
INTEGER{version-1(0)},
community--communityname
OCTETSTRING,
data--e.g.,PDUsiftrivial
ANY--authenticationisbeginused
PDUs:
=CHOICE{get-request
GetRequest-PDU,
get-next-request
GetNextRequest-PDU
get-response
GetResponse-PDU,
set-request-PDU,
SetRequest-PDU,
trap
Trap-PDU
3、SNMPGet-Request操作的实现
下面给出用GNUC++在REDHAT6.0操作系统中实现SNMP消息操作的例子。
SNMP库函数的源代码和头文件来自http:
//www.cmu.edu。
编译后生成libdsnmp.a作为snmp程序的函数调用库用于各种snmp命令集的程序编写,下面以Get-Request命令为例给出Get-Request命令的源程序(编译和运行环境为Linux,Kernel为2.2.5.-1gcc,g++-GNUprojectCandC++Compiler(v2.7))该源代码已被编译通过,可在LINUX的命令环境下查询装有SNMP代理服务的设备的MIB信息。
/*SNMPGET-REQUEST的C++实现
用法:
snmpgetIP地址团体名查询对象OID*/
#include<
sys/types.h>
netinet/in.h>
stdio.h>
#include"
snmp.h"
snmp_impl.h"
asn1.h"
snmp_api.h"
snmp_client.h"
externinterrno;
intsnmp_dump_packet=0;
main(argc,argv)
intargc;
char*argv[];
{
structsnmp_sessionsession,*ss;
structsnmp_pdu*pdu,*response;
structvariable_list*vars;
intarg;
char*gateway=NULL;
char*community=NULL;
intcount,current_name=0;
char*names[128];
oidname[MAX_NAME_LEN];
intname_length;
intstatus;
init_mib();
/*
*usage:
snmpgetgateway-namecommunity-name
*/
/*命令和参数的读取和分析*/
for(arg=1;
arg<
argc;
arg++){
if(argv[arg][0]=='
-'
){
switch(argv[arg][1]){
case'
d'
snmp_dump_packet++;
break;
default:
printf("
invalidoption:
-%c\n"
argv[arg][1]);
continue;
if(gateway==NULL){
gateway=argv[arg
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安电子科技大学 网络 管理 作业