1、Page 1Page 2 本章将在前文详细分析典型网络管理系统功本章将在前文详细分析典型网络管理系统功能和使用的基础上,具体介绍能和使用的基础上,具体介绍Windows系统下网系统下网络管理软件开发的流程和方法。络管理软件开发的流程和方法。Page 3 通用的网络管理应用程序通常称做网络管理通用的网络管理应用程序通常称做网络管理平台,它提供一组通用的网络管理功能,也提供平台,它提供一组通用的网络管理功能,也提供实现专用管理程序的工具,支持基本的管理功能。实现专用管理程序的工具,支持基本的管理功能。Page 4 无论使用什么管理平台,设计网络管理应用程无论使用什么管理平台,设计网络管理应用程序都
2、要首先确定以下内容:序都要首先确定以下内容: 确定被管理节点的网络地址(确定被管理节点的网络地址(IP地址,地址,IPX地址,地址,DNS主机名);主机名); 确定远程目标的端口号(确定远程目标的端口号(UDP161,专用端口号大于,专用端口号大于1024);); 确定接收陷入的端口号(确定接收陷入的端口号(UDP162,专用端口号大于,专用端口号大于1024););Page 5 确定团体名(通常为确定团体名(通常为public,如果使用两个团,如果使用两个团体名,则体名,则read-only团体名为团体名为public,read-write团体团体名为名为private);); 确定响应定时
3、器等待时间间隔;确定响应定时器等待时间间隔; 确定重复请求次数;确定重复请求次数; 确定轮询时间间隔。确定轮询时间间隔。Page 6 网络管理应用程序的基本功能是辅助管理员监网络管理应用程序的基本功能是辅助管理员监视网络,发现活动的网络设备,排除网络故障,具视网络,发现活动的网络设备,排除网络故障,具体包括以下内容:体包括以下内容:网络发现网络发现 管理站轮询管理站轮询MIBMIB编译器和数据库编译器和数据库MIBMIB浏览器浏览器MIBMIB搜索器搜索器陷入信息记录陷入信息记录 Page 7 网络发现网络发现 网络发现通常包含两部分内容。首先是探测活动站点,网络发现通常包含两部分内容。首先是
4、探测活动站点,这可以通过向子网中的所有站点发送这可以通过向子网中的所有站点发送ICMP报文,把收到应报文,把收到应答的站点标记为活动站点;或者读取答的站点标记为活动站点;或者读取ARP缓冲区以及本地缓冲区以及本地路由器和管理主机的接口表,发现可连接的设备,然后有路由器和管理主机的接口表,发现可连接的设备,然后有选择的发送选择的发送ICMP报文。其次是标识报文。其次是标识SNMP管理站点,这可管理站点,这可以通过向活动站点发送以通过向活动站点发送GetRequest报文,获取有关信息。报文,获取有关信息。 根据收集的信息可以建立网络发现数据库,视其复杂性根据收集的信息可以建立网络发现数据库,视其
5、复杂性可用可用Text文件、文件、Windows注册表或实际的数据库引擎(如注册表或实际的数据库引擎(如Microsoft ACCESS等)实现。最后还要建立网络拓扑映像,等)实现。最后还要建立网络拓扑映像,把发现的各个子网拓扑结构用图形表示出来,也可用多个窗把发现的各个子网拓扑结构用图形表示出来,也可用多个窗口分别显示。口分别显示。 Page 8 管理站轮询管理站轮询。 定期轮询活动站点,可以用定期轮询活动站点,可以用ICMP报文检查站点活动状报文检查站点活动状态,或者利用态,或者利用SNMP收集管理信息。收集管理信息。Page 9 MIB编译器和数据库编译器和数据库 MIB模块以模块以AS
6、N.1编写,以编写,以ASC文件存储,经编译后文件存储,经编译后转换成代理可利用的格式。转换成代理可利用的格式。MIB数据库是数据库是MIB模块的集合。模块的集合。简单的应用可以不使用简单的应用可以不使用MIB数据库,这种情况下管理员发送数据库,这种情况下管理员发送请求时要手工输入变量的请求时要手工输入变量的OID、数据类型和数据值,同时要、数据类型和数据值,同时要记住常用的记住常用的OID,解释需要的,解释需要的MIB模块。复杂的应用通过模块。复杂的应用通过MIB数据库把对象描述符变换成数据库把对象描述符变换成OID(数字形式的子标识(数字形式的子标识符),确定存储的数据类型和访问方式。符)
7、,确定存储的数据类型和访问方式。 Page 10 MIB浏览器浏览器 该程序的功能是用搜索目录树的方法,定位和显示该程序的功能是用搜索目录树的方法,定位和显示MIB中的被管理对象的值,可以通过向某个中的被管理对象的值,可以通过向某个MIB对象发送对象发送GetNextRequest请求,接收和显示变量绑定表中的内容。请求,接收和显示变量绑定表中的内容。Page 11 MIB搜索器搜索器 该程序是比较简单的浏览器,用于发现被管理对象的该程序是比较简单的浏览器,用于发现被管理对象的MIB。在。在SNMP中没有标准的方法使得被管理节点公布其名中没有标准的方法使得被管理节点公布其名字、版本号、字、版本
8、号、MIB模块的内容及其支持的对象。模块的内容及其支持的对象。MIB搜索器搜索器可以动态的发现各个站点中可以访问的对象,但只能检索存可以动态的发现各个站点中可以访问的对象,但只能检索存储在变量中的储在变量中的MIB信息,其他信息,其他MIB模块数据,如对象标识符、模块数据,如对象标识符、访问模式等不能检索。因而访问模式等不能检索。因而MIB搜索器不能替代经过编译的搜索器不能替代经过编译的MIB模块。模块。 Page 12 陷入信息记录陷入信息记录 管理应用接收到一个陷入报文后,可以在拓扑结构图上管理应用接收到一个陷入报文后,可以在拓扑结构图上显示一个图标,或弹出一个消息窗口,甚至发出声音告警。
9、显示一个图标,或弹出一个消息窗口,甚至发出声音告警。同时把陷入数据及其时间和地址写入陷入记录文件。同时把陷入数据及其时间和地址写入陷入记录文件。 Page 13 SNMP是网络管理程序和是网络管理程序和SNMP代理之间的通代理之间的通信协议,主要用来管理网络设备,到目前为止几乎信协议,主要用来管理网络设备,到目前为止几乎所有的网络产品都要为其提供支持,以方便管理员所有的网络产品都要为其提供支持,以方便管理员的管理和软件开发人员的开发。的管理和软件开发人员的开发。 SNMP编程主要包括两大部分:网络管理程序编程主要包括两大部分:网络管理程序的开发和的开发和SNMP代理软件的开发。网络管理程序主代
10、理软件的开发。网络管理程序主要运行在管理端,代理软件则运行在特定的网络被要运行在管理端,代理软件则运行在特定的网络被管设备上。管设备上。Page 141SNMP编程内容编程内容从客户机从客户机/服务器的角度分析,网络管理程服务器的角度分析,网络管理程序和序和SNMP代理既是客户机,同时又充当服务器代理既是客户机,同时又充当服务器的角色。作为服务器,网络管理程序监听的角色。作为服务器,网络管理程序监听UDP端端口口162,接收,接收SNMP代理发送的陷阱消息;代理发送的陷阱消息;SNMP代理监听代理监听UDP端口端口161,接收网络管理程序发送,接收网络管理程序发送的各种查询请求。作为客户机,网
11、络管理程序可的各种查询请求。作为客户机,网络管理程序可以随时向以随时向SNMP代理发送查询请求,而代理发送查询请求,而SNMP代代理则可以随时向网络管理程序发送陷阱信息。理则可以随时向网络管理程序发送陷阱信息。Page 15 开发基于开发基于SNMP的网络管理程序,和开发其他基于客户的网络管理程序,和开发其他基于客户机机/服务器模式的网络应用程序没有本质的区别。如果程序不服务器模式的网络应用程序没有本质的区别。如果程序不准备处理陷阱信息,那么网络管理程序实际上就是一个普通准备处理陷阱信息,那么网络管理程序实际上就是一个普通的客户端程序。开发主要包括以下内容:构造正确的的客户端程序。开发主要包括
12、以下内容:构造正确的PDU,组成组成SNMP报文;对发送(接收)的报文;对发送(接收)的SNMP报文进行报文进行BER编编码(解码);接收并处理陷阱信息。码(解码);接收并处理陷阱信息。 BER编码处理后的编码处理后的SNMP报文,使用报文,使用UDP进行封装,并进行封装,并设置服务器端(设置服务器端(SNMP代理)代理)IP地址和端口号地址和端口号161。接收到。接收到返回的应答包后,再对返回的应答包后,再对SNMP报文进行解码处理。报文进行解码处理。Page 16 SNMPv1的报文由的报文由SNMP版本号、共同体字符串和版本号、共同体字符串和一个附加的一个附加的PDU结构组成。结构组成。
13、BER编码的对象是整个报文,编码的对象是整个报文,而不仅仅是而不仅仅是PDU部分。部分。UDP报文的数据部分,就是一个报文的数据部分,就是一个经过经过BER编码处理的完整编码处理的完整SNMP报文。图报文。图8-1所示是网络所示是网络管理程序发送的管理程序发送的SNMP请求报文使用的请求报文使用的UDP报文格式。报文格式。Page 172SNMP变量变量 SNMP变量是运行期间变量是运行期间SNMP代理维护的被管理对象实代理维护的被管理对象实例。网络管理程序通过查询例。网络管理程序通过查询SNMP变量的值,获知被管理设变量的值,获知被管理设备的网络运行状态;通过设置备的网络运行状态;通过设置S
14、NMP变量值,达到远程配置变量值,达到远程配置网络参数的目的。无论是查询还是设置操作,都离不开网络参数的目的。无论是查询还是设置操作,都离不开SNMP变量。变量。Page 18 表产生的表产生的SNMP变量可以看作一个多维动态数组,如表变量可以看作一个多维动态数组,如表中有中有n个列对象,就产生一个个列对象,就产生一个n维动态数组。维动态数组。 变量标识符就是列对象实例标识符。变量标识符就是列对象实例标识符。 SNMP变量对网络管理程序的开发十分重要,管理过程变量对网络管理程序的开发十分重要,管理过程的实质是程序对于的实质是程序对于SNMP变量的操作。变量的操作。 SNMP代理中有些代理中有些
15、SNMP变量是由代理所实现的变量是由代理所实现的MIB所所决定的。决定的。MIB中的标量对象只有一个实例,因此一个标量对中的标量对象只有一个实例,因此一个标量对象在代理中只产生一个象在代理中只产生一个SNMP变量。变量。 列对象的情况相对复杂。虽然列对象可以有多个对象实列对象的情况相对复杂。虽然列对象可以有多个对象实例,但运行期间,同一个表中列对象的实例数是相等的。由例,但运行期间,同一个表中列对象的实例数是相等的。由MIB中表产生的中表产生的SNMP变量数要根据实际情况而定。变量数要根据实际情况而定。 Page 193MIB表的操作表的操作 MIB表结构中的列对象往往包含着一组相关的网络信表
16、结构中的列对象往往包含着一组相关的网络信息,程序中经常需要对表进行操作,有时是获取一个列对象息,程序中经常需要对表进行操作,有时是获取一个列对象的所有实例,有时是获取几个列对象的所有实例。根据表的的所有实例,有时是获取几个列对象的所有实例。根据表的结构以及结构以及SNMP GetNext操作特点,使用操作特点,使用GetNext完成表的检完成表的检索。索。 只要产生的应答只要产生的应答PDU不超过大小限制,一次操作中可以不超过大小限制,一次操作中可以绑定多个绑定多个SNMP变量,即一次取回多个列对象实例。因此,变量,即一次取回多个列对象实例。因此,在对表进行检索操作时,有两种选择,可以在一次在
17、对表进行检索操作时,有两种选择,可以在一次SNMP GetNext操作中取回所有相关列对象的实例,即一次取回一操作中取回所有相关列对象的实例,即一次取回一行中的所有实例;或者每次取回列对象的一个实例,循环操行中的所有实例;或者每次取回列对象的一个实例,循环操作直至取回所有相关的作直至取回所有相关的SNMP变量。变量。Page 20 在在Windows下实现下实现SNMP的编程,可以采用的编程,可以采用Winsock接接口,在口,在161和和162端口通过端口通过UDP传送信息。传送信息。 WinSNMP API函数实现了基本的函数实现了基本的SNMP功能,使用功能,使用SNMP消息完成消息完成
18、SNMP实体间的通信。实体间的通信。 使用如使用如UCD SNMP、PowerT、SNMP+等的支持等的支持SNMP功能的第三方软件包能够大大简化功能的第三方软件包能够大大简化Windows环境下的环境下的SNMP编程。编程。 Page 21 基于基于Windows的的SNMP服务采用由管理系统、代理服务采用由管理系统、代理和其他相关组件组成的分布式体系结构,和其他相关组件组成的分布式体系结构,Windows计算计算机既可以是机既可以是SNMP管理者,也可以是安装管理者,也可以是安装SNMP代理的代理的被管对象。当被管对象。当Windows计算机发生重大事件,计算机发生重大事件,SNMP服服务
19、就会把状态信息发送给一个或多个管理主机。务就会把状态信息发送给一个或多个管理主机。 Page 22 Windows 32系统支持并发的系统服务,一个系统支持并发的系统服务,一个Windows 32系统服务可以在后台运行,它的开始和停系统服务可以在后台运行,它的开始和停止无须系统重启动。服务是一种特殊的止无须系统重启动。服务是一种特殊的Windows 32应应用软件,它通过用软件,它通过Windows 32API与与Windows NT的服务的服务控制管理器(控制管理器(SCM)连接,一般运行在后台,作用是)连接,一般运行在后台,作用是监视硬件设备和其他系统进程,提供访问外围设备和监视硬件设备和
20、其他系统进程,提供访问外围设备和操作系统辅助功能的能力。操作系统辅助功能的能力。 系统服务在系统启动时或用户登录时自动开始运行,系统服务在系统启动时或用户登录时自动开始运行,当用户退出或系统关机时停止运行。当用户退出或系统关机时停止运行。SNMP就是运行于就是运行于Windows32系统之上的一个服务软件,支持系统之上的一个服务软件,支持SNMP管理管理站和代理功能,包括发送和接收陷入的能力。站和代理功能,包括发送和接收陷入的能力。 Page 23 Windows 2000系统的系统的SNMP服务包括两个应用程序。一服务包括两个应用程序。一个是个是SNMP代理服务程序代理服务程序Snmp.ex
21、e,另一个是,另一个是SNMP陷入服陷入服务程序务程序Snmptrap.exe。 Snmp.exe接收接收SNMP请求报文,根据要求发送响应报文,请求报文,根据要求发送响应报文,能对能对SNMP报文进行语法分析,报文进行语法分析,ASN.1表示和表示和BER编码编码/译码,译码,也能发送陷入报文,并处理与也能发送陷入报文,并处理与WinSock API的接口。的接口。 Snmptrap.exe监听发送给监听发送给NT主机的陷入报文,然后把主机的陷入报文,然后把其中的数据传送给其中的数据传送给SNMP管理管理API。 Windows 95/98中没有陷入处理程序。中没有陷入处理程序。Window
22、s Server 2003中中SNMP的内部体系结构由管理端函数库和代理端函数的内部体系结构由管理端函数库和代理端函数库两大部分实现,其中部分函数功能出现交迭,既用于管理库两大部分实现,其中部分函数功能出现交迭,既用于管理端,也用于代理端。图端,也用于代理端。图8-3所示为所示为Windows Server 2003 SNMP服务体系结构。服务体系结构。Page 24Page 25 Windows的的SNMP代理服务是可扩展的,即允许动态地代理服务是可扩展的,即允许动态地加入或减少加入或减少MIB信息。这意味着程序员不必修改和重新编译信息。这意味着程序员不必修改和重新编译代理程序,只需增加或删
23、除一个能处理指定信息的子代理就代理程序,只需增加或删除一个能处理指定信息的子代理就可以了。可以了。Microsoft把这种子代理叫做扩展代理,它处理私有把这种子代理叫做扩展代理,它处理私有的的MIB对象和特定的陷入条件。当对象和特定的陷入条件。当SNMP代理服务接收到一代理服务接收到一个请求报文时,它就把变量绑定表的有关内容送给对应的扩个请求报文时,它就把变量绑定表的有关内容送给对应的扩展代理,扩展代理根据展代理,扩展代理根据SNMP的规划对其私有的变量进行处的规划对其私有的变量进行处理,形成响应信息。理,形成响应信息。 编写扩展代理程序是开发网络管理系统的程序员的责任,编写扩展代理程序是开发
24、网络管理系统的程序员的责任,程序员可根据需要随时增加或删除系统的扩展代理程序。程序员可根据需要随时增加或删除系统的扩展代理程序。SNMP代理服务和扩展代理以及陷入服务与代理服务和扩展代理以及陷入服务与Windows 32操作操作系统的关系如图系统的关系如图8-4所示。所示。 Page 26Page 27 WinSNMP API是是Microsoft为为SNMP开发的应用程序接开发的应用程序接口,是一组用于构造口,是一组用于构造SNMP服务和扩展代理和服务和扩展代理和SNMP管理系管理系统的库函数。图统的库函数。图8-5所示为所示为SNMP代理与代理与SNMP API交互作用交互作用的详细过程。
25、的详细过程。 Page 28 SNMP报文通过报文通过UDP/IP服务经服务经WinSock API传送到传送到SNMP代理。代理。 SNMP代理调用代理调用SNMP API对报文译码和认证对报文译码和认证检查,然后把变量信息传送给有关的扩展代理,经扩展代理检查,然后把变量信息传送给有关的扩展代理,经扩展代理处理形成响应信息后又返回给处理形成响应信息后又返回给SNMP代理,再由代理,再由SNMP代理代理装配成装配成GetResponse报文,交给报文,交给WinSock API回送给发出请回送给发出请求的管理站。如果请求的求的管理站。如果请求的MIB对象没有得到任何扩展代理的对象没有得到任何扩
26、展代理的支持,则返回支持,则返回noSuchName错误。错误。 陷入服务监视从陷入服务监视从WinSock API传来的陷入报文,然后把传来的陷入报文,然后把陷入数据通过命名管道传送给陷入数据通过命名管道传送给SNMP的管理的管理API。管理。管理API是是Microsoft为开发为开发SNMP管理应用提供的动态链接库,是管理应用提供的动态链接库,是SNMP API的一部分。图的一部分。图8-6所示为所示为SNMP陷入、管理应用、陷入、管理应用、管理管理API及及WinSock API间的关系。间的关系。 Page 29Page 30 管理应用程序从管理管理应用程序从管理API接收数据,向管
27、理接收数据,向管理API发送管发送管理信息,并通过管理理信息,并通过管理API与与WinSock通信,实现网络管理功通信,实现网络管理功能。能。 管理者向代理请求的信息包含在管理者向代理请求的信息包含在MIB中。中。MIB是一组可是一组可管理的对象,这些对象代表了与网络设备有关的各种类型的管理的对象,这些对象代表了与网络设备有关的各种类型的信息。信息。 Windows SNMP服务支持服务支持Internet MIB-2、LAN Manager MIB-2、DHCP MIB、HTTP MIB等。等。 Page 31 Windows SNMP服务的安装方法同其他服务的服务的安装方法同其他服务的安
28、装方法类似,但安装之前必须首先安装安装方法类似,但安装之前必须首先安装TCP/IP。在在Windows 2000/XP/2003中安装和配置中安装和配置SNMP服务服务的方法一致。的方法一致。Page 321安装安装SNMP服务服务StartControl PanelAdd Or Remove ProgramsAdd/Remove Windows ComponentsWindows组件向导组件向导Management And Monitoring Tools,但不要选中,但不要选中该复选框,仅仅选择该入口即可。该复选框,仅仅选择该入口即可。 单击单击“Details(详细)(详细)”按钮打开窗
29、口,然后选中在按钮打开窗口,然后选中在“Simple Network Management Protocol(简单网络管理协(简单网络管理协议)议)”旁边的复选框。最后单击旁边的复选框。最后单击“OK(确定)(确定)”按钮返回按钮返回“Windows组件向导组件向导”窗口。单击窗口。单击“Next(下一步)(下一步)”按钮,按钮,如果出现了相关提示,则插入如果出现了相关提示,则插入Windows的安装光盘。的安装光盘。Page 332配置配置SNMP服务服务 完成了上述步骤之后,打开服务控制面板,并找到完成了上述步骤之后,打开服务控制面板,并找到SNMP服务,然后使用正确的通讯字符串来配置服务
30、,然后使用正确的通讯字符串来配置SNMP。双。双击该服务,就可以打开服务的属性页面,如图击该服务,就可以打开服务的属性页面,如图8-9所示,用所示,用户可以在户可以在“SNMP Service的属性的属性”对话框中完成服务设置,对话框中完成服务设置,具体配置情况不再赘述。注意在具体配置情况不再赘述。注意在“安全安全”选项卡中可设置访选项卡中可设置访问团体号及主机地址,通常情况下使用系统默认的配置即可问团体号及主机地址,通常情况下使用系统默认的配置即可(默认情况下团体名为(默认情况下团体名为public)。)。Page 34Page 35Page 363测试测试SNMP服务服务 SNMPUTIL
31、(Snmptuil.exe)是微软)是微软Windows 2000资资源工具中的一个实用程序,也是网络管理系统中的管理进程,源工具中的一个实用程序,也是网络管理系统中的管理进程,可用于测试可用于测试SNMP服务,也可以测试用户开发的扩展代理。服务,也可以测试用户开发的扩展代理。SNMPUTIL是是MS-DOS程序,是基于微软公司的管理程序,是基于微软公司的管理API编编写的,但在写的,但在Windows 98系统中没有管理系统中没有管理API,所以该程序只,所以该程序只能运行在能运行在Windows NT/2000/XP/2003及更高版本的操作系统及更高版本的操作系统中,具体使用语法如下。中
32、,具体使用语法如下。Page 37usage: snmputil get|getnext|walk agent community oid oid . snmputil trap 其中其中agent表示代理进程的表示代理进程的IP地址,地址,community表示团体表示团体名,名,oid表示表示MIB对象对象ID。使用。使用SNMPUTIL发送发送GetRequest或或GetNextRequest报文,可以遍历整个报文,可以遍历整个MIB子树,可以完成子树,可以完成查看本地计算机系统信息、连续开机时间、联系人、用户列查看本地计算机系统信息、连续开机时间、联系人、用户列表、运行的进程等功能,
33、实现对表、运行的进程等功能,实现对SNMP服务的测试。服务的测试。Page 38 SNMPUTIL还有一个还有一个trap的参数,主要用来陷阱捕捉,的参数,主要用来陷阱捕捉,它可以接受代理进程上主动发来的信息。如果在命令行下面它可以接受代理进程上主动发来的信息。如果在命令行下面输入输入snmputil trap后按后按“Enter”键,然后用错误的团体名来键,然后用错误的团体名来访问代理进程,这时候就能收到代理进程主动发回的报告。访问代理进程,这时候就能收到代理进程主动发回的报告。 使用使用SNMPUTIL可以实现对可以实现对SNMP基本服务的测试,基本服务的测试,但由于但由于Snmptuil
34、.exe只是一个简单的工具,没有包含只是一个简单的工具,没有包含Set命令,命令,因此不能实现设置操作。此外,在因此不能实现设置操作。此外,在Win2000/XP安装光盘中安装光盘中附带了一个图形界面的测试程序附带了一个图形界面的测试程序Snmputilg.exe,用户可以启,用户可以启动光盘中动光盘中/support/tools/setup.exe安装此测试程序。该程序使安装此测试程序。该程序使用方法与用方法与Snmputil.exe类似,具体不再赘述。类似,具体不再赘述。 Page 39 在在Windows系统中开发网络管理应用程序需要系统中开发网络管理应用程序需要使用系统提供的使用系统提
35、供的API函数,主要包括函数,主要包括4部分,即扩展部分,即扩展代理代理API、管理、管理API、使用程序、使用程序API和和WinSNMP API。编写扩展代理和。编写扩展代理和SNMP管理应用程序都要使管理应用程序都要使用这些库函数。用这些库函数。Page 401SNMP扩展代理扩展代理API函数函数SNMP扩展代理扩展代理API函数定义函数定义SNMP服务和第三方服务和第三方SNMP扩展代理扩展代理DLL间的接口。应用程序使用这些函数间的接口。应用程序使用这些函数来解析由引入的来解析由引入的SNMP PDU指定的变量绑定。扩展代理指定的变量绑定。扩展代理AP共包括共包括6个个API函数:
36、函数:SnmpExtensionCloseSnmpExtensionClose SnmpExtensionInitSnmpExtensionInit SnmpExtensionInitExSnmpExtensionInitEx SnmpExtensionQuerySnmpExtensionQuery SnmpExtensionQueryExSnmpExtensionQueryEx SnmpExtensionTrapSnmpExtensionTrap Page 412SNMP管理管理API函数函数 SNMP管理管理API函数定义第三方函数定义第三方SNMP管理端应用程序与管理端应用程序与管理函数
37、动态链接库管理函数动态链接库MGMTAPI.dll间的接口。此间的接口。此DLL与与SNMP陷入服务(陷入服务(Snmptrap.exe)一起工作,并能与一个或)一起工作,并能与一个或多个第三方管理端应用程序相结合。第三方管理端应用程序多个第三方管理端应用程序相结合。第三方管理端应用程序可以调用这些管理可以调用这些管理API函数实现发送函数实现发送SNMP请求报文,接收请求报文,接收响应等管理操作。响应等管理操作。SNNP管理管理API由由7个函数组成。个函数组成。SnmpMgrCloseSnmpMgrClose SnmpMgrGetTrapSnmpMgrGetTrap SnmpMgrOidT
38、oStrSnmpMgrOidToStr SnmpMgrOpenSnmpMgrOpen SnmpMgrRequestSnmpMgrRequest SnmpMgrStrToOidSnmpMgrStrToOid SnmpMgrTrapListenSnmpMgrTrapListen Page 423SNMP实用实用API函数函数 SNMP实用实用API函数简化函数简化SNMP数据结构的操作并提供数据结构的操作并提供在在SNMP应用程序开发过程非常有用的函数集。应用程序开发过程非常有用的函数集。 4WinSNMP API函数函数WinSNMP API为在为在Windows下开发基于下开发基于SNMP的网
39、的网络管程序提供解决方案,为络管程序提供解决方案,为SNMP网管开发者提供了必须遵网管开发者提供了必须遵循的开放式单一接口规范,定义了过程调用、数据类型、数循的开放式单一接口规范,定义了过程调用、数据类型、数据结构和相关的语法。据结构和相关的语法。Page 43WinSNMPWinSNMP API API具有以下特点:具有以下特点: 为基于为基于SNMPSNMP开发网络管理应用程序提供接口;开发网络管理应用程序提供接口; 支持支持SNMPv1SNMPv1和和SNMPv2CSNMPv2C; 除支持除支持SNMPSNMP管理端功能外,管理端功能外,WinSNMPWinSNMP API2.0 API
40、2.0还支持还支持SNMPSNMP代理功能;代理功能; 支持支持3232位应用程序和多线程;位应用程序和多线程; 适应于适应于Windows2000Windows2000及后续操作系统;及后续操作系统; 比比SNMPSNMP管理管理APIAPI提供更多功能的函数。提供更多功能的函数。 WinSNMP API以函数的形式封装了以函数的形式封装了SNMP的各部分,的各部分,且针对且针对SNMP是使用是使用UDP的特点而设置了消息重传和超时机的特点而设置了消息重传和超时机制等。基于制等。基于WinSNMP的应用程序必须通过的应用程序必须通过WSNMP32.DLL访问访问WinSNMP API函数。函
41、数。WinSNMP API提供了提供了7大类,约大类,约50多个多个API函数。函数。 Page 441SNMP消息与异步模式消息与异步模式 Win32编程模式的一个很大特点就是消息驱动。编程模式的一个很大特点就是消息驱动。WinSNMP采用了异步消息驱动模式,主要基于两个原因:采用了异步消息驱动模式,主要基于两个原因: 异步消息驱动模式适合于面向对象理论、异步消息驱动模式适合于面向对象理论、SNMP分布式分布式管理模型以及管理模型以及Windows编程、运行环境。编程、运行环境。 SNMP在管理站和代理间基于数据报传送数据,没有在在管理站和代理间基于数据报传送数据,没有在远程实体之间建立实际
42、通道(虚电路)。远程实体之间建立实际通道(虚电路)。Page 45 消息驱动程序必须响应各种重要事件,有些则完全消息驱动程序必须响应各种重要事件,有些则完全依赖于异步关系。、依赖于异步关系。、WinSNMPWinSNMP API API中几乎所有函数都含有中几乎所有函数都含有异步因素,有些则是完全异步的。有异步因素,有些则是完全异步的。有3 3个非常重要的异步个非常重要的异步函数:函数: SnmpSendMsgSnmpSendMsg SnmpRecvMsg SnmpRecvMsg SnmpRegiste SnmpRegiste WinSNMP WinSNMP的整个编程模式就是基于异步的。的整个
43、编程模式就是基于异步的。 简单网络管理协议使用消息来通信,并在远程简单网络管理协议使用消息来通信,并在远程SNMP实实体间交换信息。体间交换信息。SNMP消息包含协议数据单元及相关消息包含协议数据单元及相关RFC定定义的附加消息头元素。义的附加消息头元素。PDU是包含是包含SNMP数据成分(或域)数据成分(或域)的数据包。的数据包。SNMP消息的格式对消息的格式对SNMPv1和和SNMPv2都相同。都相同。但是,但是,SNMPv2支持更多的支持更多的PDU类型。类型。 Page 462WinSNMP支持级别支持级别 WinSNMP实现提供实现提供SNMP通信支持的多个级别:通信支持的多个级别:
44、 Level 0:只支持消息编码与解码,不支持:只支持消息编码与解码,不支持SnmpSendMsg SnmpRecvMsg SnmpRegister。 Level 1:支持:支持0级通信和在级通信和在SNMPv1框架下与框架下与SNMP代代理实体相互操作。理实体相互操作。 Level 2:支持:支持1级通信和在级通信和在SNMPv2C框架下与框架下与SNMP代代理实体相互操作。理实体相互操作。 Level 3:支持:支持2级通信和与其他级通信和与其他SNMPv2管理站通信。管理站通信。Page 47 SNMP支持支持SNMPv1与与SNMPv2的共存,所以的共存,所以WinSNMP提供对两个版
45、本协议的支持。提供对两个版本协议的支持。 SnmpStartup函数能够返回当前函数能够返回当前WinSNMP实现支实现支持的持的SNMP通信的最大级别。如果通信的最大级别。如果WinSNMP管理应用管理应用程序使用此实现只是程序使用此实现只是SNMP消息编码和解码,则应用程消息编码和解码,则应用程序必须进行由实现执行的需要转换。序必须进行由实现执行的需要转换。 Page 483协议数据单元(协议数据单元(PDU) 一个一个PDU包括一个变量绑定列表,包括一个变量绑定列表,PDU的结构受限于的结构受限于WinSNMP服务。服务。WinSNMP管理器应用程序用管理器应用程序用HSNMP_PDU类
46、型句柄可以存取类型句柄可以存取PDU。 WinSNMP管理器应用程序在它调用管理器应用程序在它调用SnmpSendMsg函数函数或或SnmpEncodeMsg函数以前必须产生一个函数以前必须产生一个PDU。 应用程序可以提取或修改应用程序可以提取或修改PDU的数据元素,释放为的数据元素,释放为PDU分配的资源。为了执行这些操作,管理器应用程序使用分配的资源。为了执行这些操作,管理器应用程序使用WinSNMP PDU函数。函数。Page 494陷入从陷入从SNMPv1转换到转换到SNMPv2C 当当WinSNMP实现从实现从SNMPv1框架下的实体操作中收到框架下的实体操作中收到陷入时,它把此陷
47、入转换到陷入时,它把此陷入转换到SNMPv2C格式。因此,当格式。因此,当SnmpRecvMsg传送陷入时它总是用传送陷入时它总是用SNMPv2C格式。格式。RFC1908详细说明从详细说明从SNMPv1到到SNMPv2C转换陷入格式的转换陷入格式的规则。规则。 WinSNMP管理器应用程序可以检查变量绑定列表中的管理器应用程序可以检查变量绑定列表中的最后一个变量绑定入口来决定入口是否是从最后一个变量绑定入口来决定入口是否是从SNMPv1转换到转换到SNMPv2C格式的陷入。格式的陷入。 Page 505本地数据库本地数据库 WinSNMP服务本地数据库存储以下信息。服务本地数据库存储以下信息
48、。50 (1)网络协议信息和版本号:依据该信息决定传输中使)网络协议信息和版本号:依据该信息决定传输中使用的传输协议和用的传输协议和SNMP版本。版本。 (2)实体和上下文转换模式:依据该信息向用户提供界)实体和上下文转换模式:依据该信息向用户提供界面友好的面友好的SNMP实体和上下文。实体和上下文。 (3)重发策略:依据该信息决定是否进行重发,并存储)重发策略:依据该信息决定是否进行重发,并存储每一个目的连接实体的超时期限和重发次数。每一个目的连接实体的超时期限和重发次数。6重发策略重发策略WinSNMP管理器应用程序可以用各种方式进行管理器应用程序可以用各种方式进行SNMP操作请求。应用程
49、序可以给操作请求。应用程序可以给SNMP代理发送几个请求代理发送几个请求但不等待应答,或发送单个的请求并等待应答。由于但不等待应答,或发送单个的请求并等待应答。由于SNMP可以在多个传输协议上执行,故传送机制和可靠性会改变。可以在多个传输协议上执行,故传送机制和可靠性会改变。Page 51 当编写当编写WinSNMP管理器应用程序时,必须决定管理器应用程序时,必须决定基于应用程序发布操作请求的方式和通信操作需要基于应用程序发布操作请求的方式和通信操作需要的可靠等级,然后,必须选择重发策略并实现此重的可靠等级,然后,必须选择重发策略并实现此重发政策。发政策。Page 527实体和上下文转换模式实
50、体和上下文转换模式 WinSNMP管理应用程序通过设定实体和上下文转换模管理应用程序通过设定实体和上下文转换模式可以指定实体和上下文参数的解释和翻译。式可以指定实体和上下文参数的解释和翻译。WinSNMP实实现保存此模式于数据库中。现保存此模式于数据库中。8WinSNMP数据管理概念数据管理概念 使用使用WinSNMPWinSNMP管理器管理器APIAPI进行编程时,采用的主要数据管进行编程时,采用的主要数据管理概念包括:理概念包括:l 对象标识符对象标识符l WinSNMPWinSNMP描述符描述符l 资源句柄对象资源句柄对象l C C类型串类型串l 分配分配WinSNMPWinSNMP内存