基于.NET技术实现的SNMP通信
摘要:随着网络规模的扩大和复杂性的提高,网络安全越来越受到网络管理者的重视,SNMP以设计简单为最大优势,得到了广大厂商的支持和应用。基于开发一个功能健全的网络监控系统为目的,利用.NET技术支持下的SNMP-SharpNet开发包提供的接口不断进行实验研究,最终从SNMP请求的建立、发送和接受以及SNMP请求的超时和重传都实现了函数封装,同时实现了管理站和管理代理之间的SNMP通信,为监控系统后续功能的开发奠定了良好基础。
关键词:SNMP;.NET技术;SNMPSharpNet开发包;SNMP通信
随着计算机网络技术的飞速发展,通信网络结构越来越复杂,通信网络使用的设备也越来越复杂,由于网络的大型化和复杂化,如何有效地进行网络管理日益成为们普遍关注的问题。网络管理的目标是最大限度地增加网络的可用时间,提高网络设备的利用率、网络性能、服务质量和安全性,简化多厂商混合网络环境下的管理和控制网络运行成本,提供网络的长期规划。
SNMP(Simple Network Management Protocol,简单网络管理协议)易于实现和广泛的TCP/IP应用基础,可以在多厂商混合网络环境下,通过提供单一的网络操作控制环境来管理所有子网和被管理设备,以集中的、统一的方式远程控制网络,以排除故障和重新配置网络设备而获得厂商的支持。
然而,实现SNMP编程常见方法是使用网络管理应用SNMP的API,大多数API都提供了一个很大的函数库,比如WinsNMP。由于.NET有丰富的、可复用的标准类库,采用.NET开发越来越受到开发人员的青睐。为了简化SNMP网络管理系统的开发复杂度、开发出高效易扩展的代码,采用把复杂的WinSNMP的API函数封装成一个个相关的.NET类,从而简化了SNMP网络管理软件开发的复杂性。用于它把SNMP编程中的核心部分都面向对象化封装起来,因此开发人员不必了解SNMP底层机制,只要了解.NET的编程知识和SNMP编程的流程,就可以快速开发出高效的SNMP程序。
1 SNMP概述
SNMP(Simple Network Management Protocol,简单网络管理协议)首先是有IETF的研究小组为了解决Internet上的路由器的管理问题而提出的。1989年SNMPv1发行时,虽然能显示出管理大部分Internet设备的强大能力,但是也暴露出明显不足:给网络带来沉重负担、网络中数据的安全性差。1993年IETF发布了新的SNMP v2,然后再增加了安全机制的同时,也增加了实施的复杂性。随着网络安全重要性的发展,SNMPv3诞生了,其体系结构不仅体现了模块化的设计思想,还能简单地实现功麓模块的增加和修改。从总体上说,SNMP的设计原则是简单性和可扩展性。简单性是通过信息类型限制、请求响应或协议而实现的;可扩展性是通过将管理信息模型与协议、被管理对象的详细规定(MIB)分离而实现的。
1.1 SNMP通信模型
SNMP通信管理模型采用的是管理站/管理代理模型,共有4个组成部分:管理站、管理代理、管理信息库和网络管理协议,如图1所示。
它们之间的关系是:管理站通过与管理代理发送/接受/响应SNMP请求来完成对管理代理的监控管理工作、所有管理设备的信息都被储存在管理代理实体的管理信息库中、管理站和管理代理之间交互的数据格式和规则都由SNMP来规范。每个部分的具体介绍如下:
1)管理站 一个单独的设备或者是共享网络中的一员,为管理站和网络管理系统提供接口。
2)管理代理 一般的网络终端如路由器、交换机等在设备出厂时都已经配置好相关的SNMP管理代理,对于不支持SNMP协议的设备,如果网络终端是主机的话,可以在“控制面板”的“添加/删除程序”的“添加/删除windows组件”。安装“简单网络管理协议”。
3)管理信息库(MIB) 存放了网络设备上被管对象资源的所有信息,每个被管对象有一个惟一对象的对象标识符(OID)。管理信息库本身就是一个定义如何把对象标识符组合成逻辑相关的集合。
4)网络管理协议(SNMP) 主要有以下3个功能:取值(Get)使网管站能读取代理处对象的值;设置值(Set)使网管站能设置管理代理处对象的值;告警信息(Trap)使管理代理能够向管理站通报重要事件。
1.2 SNMP协议数据单元
在SNMP中,信息按照SNMP报文格式在管理站和管理代理之间进行交换,一共有Get-Request操作、Get-Next-Request操作、Set-Request操作、Get-Response操作、Trap操作一共5种报文类型。如图2所示。
前面3个操作是由管理站向管理代理发出的,后面2个操作是管理代理发给管理站的。这里值得注意的一点是,在管理代理一端使用熟知端口161来接受get或set报文,而在管理站一端是用熟知端口162来接受trap报文。
评论