
SNMP
简单网路管理协定(SNMP,Simple Network Management Protocol),由一组网路管理的标準组成,包含一个套用层协定(application layer protocol)、资料库模型(database schema)和一组资源对象。该协定能够支持网路管理系统,用以监测连线到网路上的设备是否有任何引起管理上关注的情况。该协定是网际网路工程工作小组(IETF,Internet Engineering Task Force)定义的internet协定簇的一部分。SNMP的目标是管理网际网路Internet上众多厂家生产的软硬体平台,因此SNMP受Internet标準网路管理框架的影响也很大。SNMP已经出到第四个版本的协定,其功能较以前已经大大地加强和改进了。
基本介绍
- 中文名:简单网路管理协定
- 外文名:Simple Network Management Protocol
- 英文简称:SNMP
- 学科:计算机/计算机网路
工作原理
在典型的SNMP用法中,有许多系统被管理,而且是有一或多个系统在管理它们。每一个被管理的系统上又运行一个叫做代理者(agent)的软体元件,且通过SNMP对管理系统报告资讯。
基本上,SNMP代理者以变数呈现管理资料。管理系统透过GET,GETNEXT和GETBULK协定指令取回资讯,或是代理者在没有被询问的情况下,使用TRAP或INFORM传送资料。管理系统也可以传送配置更新或控制的请求,透过SET协定指令达到主动管理系统的目的。配置和控制指令只有当网路基本结构需要改变的时候使用,而监控指令则通常是常态性的工作。
可透过SNMP存取的变数以阶层的方式结合。这些分层和其他元数据(例如变数的类型和描述)以管理信息库(MIBs)的方式描述。
套用模型
SNMP是基于TCP/IP协定族的网路管理标準,是一种在IP网路中管理网路节点(如伺服器、工作站、路由器、交换机等)的标準协定。SNMP能够使网路管理员提高网路管理效能,及时发现并解决网路问题以及规划网路的增长。网路管理员还可以通过SNMP接收网路节点的通知讯息以及告警事件报告等来获知网路出现的问题。

SNMP管理的网路主要由三部分组成:
- 被管理的设备
- SNMP代理
- 网路管理系统(NMS)
它们之间的关係如右图所示。
- 网路中被管理的每一个设备都存在一个管理信息库(MIB)用于收集并储存管理信息。通过SNMP协定,NMS能获取这些信息。被管理设备,又称为网路单元或网路节点,可以是支持SNMP协定的路由器、交换机、伺服器或者主机等等。
- SNMP代理是被管理设备上的一个网路管理软体模组,拥有本地设备的相关管理信息,并用于将它们转换成与SNMP兼容的格式,传递给NMS。
- NMS运行应用程式来实现监控被管理设备的功能。另外,NMS还为网路管理提供大量的处理程式及必须的储存资源。
协定发展
第一版
SNMP第一版和SMI规格的资料型态SNMP第一版SMI指定许多SMI规格的资料型态,它们被分为两大类:
简单资料型态
泛套用资料型态
SNMPv1使用基于团体名进行报文认证
第二版
SNMP第二版和管理资讯结构SNMP第二版SMI在RFC 2578之中描述,它在SNMP第一版的SMI规格资料型态上进行增加和强化,例如位元串(bit strings)、网路地址(network addresses)和计数器(counters)。
SNMP协定在OSI模型的套用层(第七层)运作,在第一版中指定五种核心PDU:
GET REQUEST
GET NEXT REQUEST
GET RESPONSE
SET REQUEST
TRAP
其他PDU在SNMP第二版加入,包含:
GETBULK REQUEST
INFORM
SNMP第二版SMI资讯模组SNMP第二版SMI也指定了资讯模组来详细说明一群相关连的定义。有三种SMI资讯模组:MIB模组、回应状态、能力状态。
第三版
SNMP第三版SNMP第三版由RFC 3411-RFC 3418定义,主要增加SNMP在安全性和远端配置方面的强化。
SNMP第三版提供重要的安全性功能:
信息完整性:保证封包在传送中没有被篡改。
认证:检验信息来自正确的来源。
封包加密:避免被未授权的来源窥探。
SNMPv3定义了基于用户的安全模型,使用共享密钥进行报文认证。
SNMPv3中引入了下列三个安全级别。
- noAuthNoPriv:不需要认证,不提供隐私性(加密)。
- authNoPriv:基于HMAC-MD5或HMAC-SHA的认证,不提供加密。
- authPriv:除了认证之外,还将CBC-DES加密算法用作隐私性协定。
信息
MIB,Management Information Base:管理信息库,由网路管理协定访问的管理对象资料库,它包括SNMP可以通过网路设备的SNMP管理代理进行设定的变数。SMI,Structure of Management Information:管理信息结构,用于定义通过网路管理协定可访问的对象的规则。SMI定义在MIB中使用的数据类型及网路资源在MIB中的名称或表示。
使用SNMP进行网路管理需要下面几个重要部分:管理基站,管理代理,管理信息库和网路管理工具。
管理基站通常是一个独立的设备,它用作网路管理者进行网路管理的用户接口。基站上必须装备有管理软体,管理员可以使用的用户接口和从MIB取得信息的资料库,同时为了进行网路管理它应该具备将管理命令发出基站的能力。
管理代理是一种网路设备,如主机,网桥,路由器和集线器等,这些设备都必须能够接收管理基站发来的信息,它们的状态也必须可以由管理基站监视。管理代理回响基站的请求进行相应的操作,也可以在没有请求的情况下向基站传送信息。
MIB是对象的集合,它代表网路中可以管理的资源和设备。每个对象基本上是一个数据变数,它代表被管理的对象的一方面的信息。
最后一个方面是管理协定,也就是SNMP,SNMP的基本功能是:取得,设定和接收代理髮送的意外信息。取得指的是基站传送请求,代理根据这个请求回送相应的数据,设定是基站设定管理对象(也就是代理)的值,接收代理髮送的意外信息是指代理可以在基站未请求的状态下向基站报告发生的意外情况。
SNMP为套用层协定,是TCP/IP协定族的一部分。它通过用户数据报协定(UDP)来操作。在分立的管理站中,管理者进程对位于管理站中心的MIB的访问进行控制,并提供网路管理员接口。管理者进程通过SNMP完成网路管理。SNMP在UDP、IP及有关的特殊网路协定(如,Ethernet, FDDI, X.25)之上实现。
风险
接入Internet的网路面临许多风险,Web伺服器可能面临攻击,邮件伺服器的安全也令人担忧。但除此之外,网路上可能还存在一些隐性的漏洞。大多数网路总有一些设备运行着SNMP服务,许多时候这些SNMP服务是不必要的,但却没有引起网路管理员的重视。
根据SANS协会的报告,对于接入Internet的主机,SNMP是威胁安全的十大首要因素之一;同时,SNMP还是Internet主机上最常见的服务之一。特别地,SNMP服务通常在位于网路边缘的设备(防火墙保护圈之外的设备)上运行,进一步加剧了SNMP带来的风险。这一切听起来出人意料,但其实事情不应该是这样的。
背景知识
SNMP开发于九十年代早期,其目的是简化大型网路中设备的管理和数据的获取。许多与网路有关的软体包,如HP的Open View和Nortel Networks的Optivity Network Management System,还有Multi Router Traffic Grapher(MRTG)之类的免费软体,都用SNMP服务来简化网路的管理和维护。
由于SNMP的效果实在太好了,所以网路硬体厂商开始把SNMP加入到它们製造的每一台设备。今天,各种网路设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网路印表机,无一例外。
仅仅是分布广泛还不足以造成威胁,问题是许多厂商安装的SNMP都採用了默认的通信字元串(例如密码),这些通信字元串是程式获取设备信息和修改配置必不可少的。採用默认通信字元串的好处是网路上的软体可以直接访问设备,无需经过複杂的配置。
通信字元串主要包含两类命令:GET命令,SET命令。GET命令从设备读取数据,这些数据通常是操作参数,例如连线状态、接口名称等。SET命令允许设定设备的某些参数,这类功能一般有限制,例如关闭某个网路接口、修改路由器参数等功能。但很显然,GET、SET命令都可能被用于拒绝服务攻击(DoS)和恶意修改网路参数。
最常见的默认通信字元串是public(唯读)和private(读/写),除此之外还有许多厂商私有的默认通信字元串。几乎所有运行SNMP的网路设备上,都可以找到某种形式的默认通信字元串。
SNMP2.0和SNMP1.0的安全机制比较脆弱,通信不加密,所有通信字元串和数据都以明文形式传送。攻击者一旦捕获了网路通信,就可以利用各种嗅探工具直接获取通信字元串,即使用户改变了通信字元串的默认值也无济于事。
近几年才出现的SNMP3.0解决了一部分问题。为保护通信字元串,SNMP3.0使用DES(DataEncryptionStandard)算法加密数据通信;另外,SNMP3.0还能够用MD5和SHA(SecureHashAlgorithm)技术验证节点的标识符,从而防止攻击者冒充管理节点的身份操作网路。
虽然SNMP3.0齣现已经有一段时间了,但自从发布以来还没有广泛套用。如果设备是2012年以前的产品,很可能根本不支持SNMP3.0;甚至有些较新的设备也只有SNMP2.0或SNMP1.0。
即使设备已经支持SNMP3.0,许多厂商使用的还是标準的通信字元串,这些字元串对黑客组织来说根本不是秘密。因此,虽然SNMP3.0比以前的版本提供了更多的安全特性,如果配置不当,其实际效果仍旧有限。
禁用SNMP
要避免SNMP服务带来的安全风险,最彻底的办法是禁用SNMP。如果你没有用SNMP来管理网路,那就没有必要运行它;如果你不清楚是否有必要运行SNMP,很可能实际上不需要。即使你打算以后使用SNMP,只要现在没有用,也应该先禁用SNMP,直到确实需要使用SNMP时才启用它。
下面列出了如何在常见的平台上禁用SNMP服务。
■Windows XP和Windows 2000
在XP和Win2K中,右击“我的电脑”,选择“管理”。展开“服务和应用程式”、“服务”,从服务的清单中选择SNMP服务,停止该服务。然后打开服务的“属性”对话框,将启动类型改为“禁用”(按照微软的默认设定,Win2K/XP默认不安装SNMP服务,但许多软体会自动安装该服务)。
■WindowsNT4.0
选择“开始”→“设定”,打开服务设定程式,在服务清单中选择SNMP服务,停止该服务,然后将它的启动类型改为禁用。
■Windows9x
打开控制台的网路设定程式,在“配置”页中,从已安装的组件清单中选择“MicrosoftSNMP代理”,点击“删除”。检查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices和HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run注册键,确认不存在snmp.exe。
■Cisco Systems硬体
对于Cisco的网路硬体,执行“noSNMP-server”命令禁用SNMP服务。如果要检查SNMP是否关闭,可执行“showSNMP”命令。这些命令只适用于运行CiscoIOS的平台;对于非IOS的Cisco设备,请参考随机文档。
■HP硬体
对于所有使用Jet Direct卡(绝大部分HP网路印表机都使用它)的HP网路设备,用telnet连线到Jet Direct卡的IP位址,然后执行下面的命令:
SNMP-config:0
quit
这些命令将关闭设备的SNMP服务。但必须注意的是,禁用SNMP服务会影响服务的发现操作以及利用SNMP获取设备状态的连线埠监视机制。
■RedHatLinux
对于RedHatLinux,可以用Linuxconf工具从自动启动的服务清单中删除SNMP,或者直接从/etc/services档案删除启动SNMP的行。对于其他Linux系统,操作方法应该也相似。
保障SNMP的安全
如果某些设备确实有必要运行SNMP,则必须保障这些设备的安全。首先要做的是确定哪些设备正在运行SNMP服务。除非定期对整个网路进行连线埠扫描,全面掌握各台机器、设备上运行的服务,否则的话,很有可能遗漏一、二个SNMP服务。特别需要注意的是,网路交换机、印表机之类的设备同样也会运行SNMP服务。确定SNMP服务的运行情况后,再採取下面的措施保障服务安全。
■载入SNMP服务的补丁
安装SNMP服务的补丁,将SNMP服务升级到2.0或更高的版本。联繫设备的製造商,了解有关安全漏洞和升级补丁的情况。
■保护SNMP通信字元串
一个很重要的保护措施是修改所有默认的通信字元串。根据设备文档的说明,逐一检查、修改各个标準的、非标準的通信字元串,不要遗漏任何一项,必要时可以联繫製造商获取详细的说明。
■过滤SNMP
另一个可以採用的保护措施是在网路边界上过滤SNMP通信和请求,即在防火墙或边界路由器上,阻塞SNMP请求使用的连线埠。标準的SNMP服务使用161和162连线埠,厂商私有的实现一般使用199、391、705和1993连线埠。禁用这些连线埠通信后,外部网路访问内部网路的能力就受到了限制;另外,在内部网路的路由器上,应该编写一个ACL,只允许某个特定的可信任的SNMP管理系统操作SNMP。例如,下面的ACL只允许来自(或者走向)SNMP管理系统的SNMP通信,限制网路上的所有其他SNMP通信:
access-list 100 permit iphost w.x.y any
access-list 100 deny udp any any eq snmp
access-list 100 deny udp any any eq snmp trap
access-list 100 permit ip any any
这个ACL的第一行定义了可信任管理系统(w.x.y)。利用下面的命令可以将上述ACL套用到所有网路接口:
interface serial0
ip access-group 100 in
总之,SNMP的发明代表着网路管理的一大进步,现在它仍是高效管理大型网路的有力工具。然而,SNMP的早期版本天生缺乏安全性,即使最新的版本同样也存在问题。就象网路上运行的其他服务一样,SNMP服务的安全性也是不可忽视的。不要盲目地肯定网路上没有运行SNMP服务,也许它就躲藏在某个设备上。那些必不可少的网路服务已经有太多让人担忧的安全问题,所以最好关闭SNMP之类并非必需的服务——至少儘量设法保障其安全。
数据
简单网路管理协定(SNMP)是1990年之后TCP/IP网路中套用最为广泛的网路管理协定。1990年5月,RFC1157定义了SNMP(simplenetworkmanagementprotocol)的第一个版本SNMPv1。RFC1157和另一个关于管理信息的档案RFC1155一起,提供了一种监控和管理计算机网路的系统方法。因此,SNMP得到了广泛套用,并成为网路管理的事实上的标準。
SNMP在90年代初得到了迅猛发展,同时也暴露出了明显的不足,如,难以实现大量的数据传输,缺少身份验证(Authentication)和加密(Privacy)机制。因此,1993年发布了SNMPv2,具有以下特点:
支持分散式网路管理
扩展了数据类型
可以实现大量数据的同时传输,提高了效率和性能
丰富了故障处理能力
增加了集合处理功能
加强了数据定义语言
信息库
管理信息库MIB指明了网路元素所维持的变数(即能够被管理进程查询和设定的信息)。MIB给出了一个网路中所有可能的被管理对象的集合的数据结构。SNMP的管理信息库採用和域名系统DNS相似的树型结构,它的根在最上面,根没有名字。图1画的是管理信息库的一部分,它又称为对象命名树(objectnamingtree)。
对象命名树的顶级对象有三个,即ISO、ITU-T和这两个组织的联合体。在ISO的下面有4个结点,其中的一个(标号3)是被标识的组织。在其下面有一个dod的子树(标号是6),再下面就是Internet(标号是1)。在只讨论Internet中的对象时,可只画出Internet以下的子树(图中带阴影的虚线方框),并在Internet结点旁边标注上{1.3.6.1}即可。
图1 管理信息库的对象命名举例

在Internet结点下面的第二个结点是mgmt(管理),标号是2。再下面是管理信息库,原先的结点名是mib。1991年定义了新的版本MIB-II,故结点名现改为mib-2,其标识为{1.3.6.1.2.1},或{Internet(1).2.1}。这种标识为对象标识符。
最初的结点mib将其所管理的信息分为8个类别,见图2。现在demib-2所包含的信息类别已超过40个。
应当指出,MIB的定义与具体的网路管理协定无关,这对于厂商和用户都有利。厂商可以在产品(如路由器)中包含SNMP代理软体,并保证在定义新的MIB项目后该软体仍遵守标準。用户可以使用同一网路管理客户软体来管理具有不同版本的MIB的多个路由器。当然,一个没有新的MIB项目的路由器不能提供这些项目的信息。

这里要提一下MIB中的对象{1.3.6.1.4.1},即enterprises(企业),其所属结点数已超过3000。例如IBM为 {1.3.6.1.4.1.2},Cisco为{1.3.6.1.4.1.9},Novell为{1.3.6.1.4.1.23}等。
查询
作用简述
SNMP是"SimpleNetworkManagementProtocol"的缩写,中文含义是"简单网路管理协定",这个协定的作用和详细情况,各位可以参考有关资料.这里只介绍针对这个协定进行状态查询的工具软体Snmputilg.exe.也是支持工具目录中所提供的.至于用途,不外乎是给系统管理员提供关于SNMP方面的信息,便于在排除故障的时候当做参考.打开工具显示界面之后,你就可以用来执行诸如GET,GET-NEXT等等操作或进行有关的设定.另外,这个工具也能将数据保存到剪贴簿,或将数据保存为以逗号为结束符号的文本档案.在使用中应当注意:即使多数对象的都使用了默认的ID标识(数值),你也要谨慎地使用SNMPSET命令,因为不正确地使用这个命令之后,可能导致网路名称资源方面的问题或是在引起连通方面的问题。
使用方法
1.启动程式:在windows2000的环境中,点击"开始->运行",在编辑框中键入snmputilg然后回车或点击"确定"。
2.和以前遇到的不同,Snmputilg.exe是一个图形界面的工具,儘管执行程式的时候可以使用命令行控制视窗打开它,但实际启动成功之后出现的界面仍然是图形的
3.工具启动后,Node编辑框中显示的是默认的回送地址,地址值是127.0.0.1;CurrentOID指的是"当前对象标识符",标识是windows系统中用来代表一个对象的数字,每个标识都是整个系统中唯一的,也就是说,标识不会、也不允许重複.图中显示的值是.1.3.6.1.2.1.public是community一项的默认选择.上面所介绍的这些项目也可选定别的值。
4.如果选择了别的系统的IP位址,则必须运行SNMP服务,而目标系统必须配置好网路访问的地址,所谓配置,包括地址设定和许可权打开.同时,所需要的辅助工具也应当具备或运行.预设情况下,windows2000对所有另外系统的IP位址都是允许访问的。
5.另一个问题是community,当选定community的值时,一要注意它所代表的对象必须存在,二要注意其"可读"属性只有获準许可之后才能进行读操作.三要注意这个项目在windows系列的不同版本中,对访问地址的限制可能不一样。
6.凡是SNMP可以执行的功能(SNMPFunctiontoExecute),在图中下拉组合框中都已经列出,可供选择.选择好之后,请滑鼠点击ExecuteCommand按钮来执行对应的操作。
以下是这些操作的功能简介:
GETthevalueofthecurrentobjectidentifier:得到当前对象的ID标识数值
GETtheNEXTvalueafterthecurrentobjectidentifier(thisisthedefault):得到紧接当前对象之后的下一个对象的ID标识数值(这是默认的)
GETtheNEXT20valuesafterthecurrentobjectidentifier:得到当前对象之后的20个对象的ID标识数值
GETallvaluesfromobjectidentifierdown(WALKthetree):得到从当前对象往下的所有对象的ID标识数值
WALKthetreefromWINSvaluesdown:从WINS值往下漫游目录
WALKthetreefromDHCPvaluesdown:从DHCP值往下漫游目录
WALKthetreefromLANMANvaluesdown:从LANMAN值往下漫游目录
WALKthetreefromMIB-IIdown(InternetMIB):从MIB-II往下漫游目录
7.显示结果含义解释:
这些结果可以清除,也可以保存或更新,要实现上述功能,可以使用选单中对应的操作,具体地说,这些操作包括:
将一个或多个结果拷贝入剪贴簿.
删除现在列出的所有内容.
清除已经执行过的所有的命令.
请求记录当前已经选定的项目.
产生一个文本档案,用该档案保存所有的记录的映像
编辑或设定某个对象的标识.在使用这个操作时要谨慎,因为一旦进行了不正确地设定,将可能导致网路名称资源方面的问题或是在引起连通方面的问题.
协定操作
SNMPv2标準的核心就是通信协定———它是一个请求/应答式的协定。
这个协定提供了在manager与agent、manager与manager之间交换管理信息的直观、基本的方法。
每条SNMPv2的报文都由一些域构成:
如果传送方、接收方的两个Party都採用了验证(authentication)机制,它就包含与验证有关的信息;否则它为空(取NULL)。验证的过程如下:传送方和接收方的Party都分别有一个验证用的密钥(secretkey)和一个验证用的算法。报文传送前,传送方先将密钥值填入图中digest域,作为报文的前缀。然后根据验证算法,对报文中digest域以后(包括digest域)的报文数据进行计算,计算出一个摘要值(digest),再用摘要值取代密钥,填入报文中的digest域。接收方收到报文后,先将报文中的摘要值取出来,暂存在一个位置,然后用传送方的密钥放入报文中的digest。将这两个摘要值进行比较,如果一样,就证明传送方确实是srcParty域中所指明的那个Party,报文是合法的;如果不一样,接收方断定传送方非法。验证机制可以防止非法用户"冒充"某个合法Party来进行破坏。
authInfo域中还包含两个时间戳(timestamp),用于传送方与接收方之间的同步,以防止报文被截获和重发。
SNMPv2的另一大改进是可以对通信报文进行加密,以防止监听者窃取报文内容。除了privDst域外,报文的其余部分可以被加密。传送方与接收方採用同样的加密算法(如DES)。
通信报文可以不加任何安全保护,或只进行验证,也可以二者都进行。
OSI
在CLTS上的映射
在CLTS[7,8]上的SNMP映射是直通方式的。步骤原理和UDP採用的相同。注意CLTS和服务都是通过包含了全部地址信息的UDP信息传输包来提供的。因此,[1]中的“传输地址”,映射在CLTS上的SNMP仅仅是一个传输选项和网路地址。
应该注意到,正如[1,5]中描述的那样,映射在面向非连线的传输服务上的SNMP和SNMP的结构原理是完全一致的。然而,CLTS本身既可以採用一个面向无连线方式,又可以採用面向连线的网路服务方式实现。在这种映射中描述的映射支持任意实现方式。(当提供所有网路服务时,应该以CLNS为实现基础。)
周知地址
不象Internet协定组,OSI没有使用周知口。当然,多路分解技术基于“选择器”发生,“选择器”是具有局部重要意义的不透明八位字串。为了照顾基于CLTS的可互操作的SNMP实现,定义四个选择器是必要的。当CLTS採用无连线模式的网路服务来提供反向SNMP传输时,应该採用由6个ASCII字元组成的“snmp-l”传输选择器;按照约定,会传送一个SNMP中断给一个正在监听由7个ASCII字元组成的“snmp-l”传输选择器的SNMP管理器。当CLTS採用面向连线的网路服务来提供反向SNMP传输时,应该採用由6个ASCII字元组成“snmp-o”传输选择器;按照约定,会传送一个SNMP中断给一个正在监听由7个ASCII字元组成的“snmp-o”传输选择器的SNMP管理器。
中断
当SNMP中断在CLTS上传送时,Trap-PDU中的代理地址栏位包含了IP位址“0.0.0.0”。SNMP管理器可以基于由传输服务提供的信息(也就是源自T-UNIT-DATA.INDICATION基本数据单元的)探知陷阱的来源。
最大讯息尺寸
一个在OSI上运行SNMP的实体应该準备好接收大小至少484个位元组的讯息。鼓励套用随时可能发生的更大的数值。
作用
SNMP是1990年之后最常用的网路管理协定。SNMP被设计成与协定无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协定上被使用。SNMP是一系列协定组和规範(见下表),它们提供了一种从网路上的设备中收集网路管理信息的方法。SNMP也为设备向网路管理工作站报告问题和错误提供了一种方法。
现在,几乎所有的网路设备生产厂家都实现了对SNMP的支持。领导潮流的SNMP是一个从网路上的设备收集管理信息的公用通信协定。设备的管理者收集这些信息并记录在管理信息库(MIB)中。这些信息报告设备的特性、数据吞吐量、通信超载和错误等。MIB有公共的格式,所以来自多个厂商的SNMP管理工具可以收集MIB信息,在管理控制台上呈现给系统管理员。
通过将SNMP嵌入数据通信设备,如路由器、交换机或集线器中,就可以从一个中心站管理这些设备,并以图形方式查看信息。现在可获取的很多管理应用程式通常可在大多数当前使用的作业系统下运行,如Windows95、Windows98、WindowsNT和不同版本UNIX的等。
一个被管理的设备有一个管理代理,它负责向管理站请求信息和动作,代理还可以藉助于陷阱为管理站主动提供信息,因此,一些关键的网路设备(如集线器、路由器、交换机等)提供这一管理代理,又称SNMP代理,以便通过SNMP管理站进行管理。
协定栈
网路设备agent常用库:net-snmp——C语言编写;snmp++——C、C++编写
网管管理端snmp manager常用库:ObjectSNMP——Java编写,所有平台;WinSNMP——WFC库,Windows平台