
_START_ARTICLE_
简单网络管理协议
_START_SECTION_
概论和基础观念
_START_PARAGRAPH_
在典型的SNMP用法中，有许多系统被管理，而且是有一或多个系统在管理它们。每一个被管理的系统上有运行一个叫做代理者（agent）的软件组件，且透过SNMP对管理系统报告信息。_NEWLINE_基本上，SNMP代理者以变量呈现管理数据。管理系统透过GET，GETNEXT和GETBULK协议指令取回信息，或是代理者在没有被询问的情况下，使用TRAP或INFORM发送数据。管理系统也可以发送配置更新或控制的请求，透过SET协议指令达到主动管理系统的目的。配置和控制指令只有当网络基本结构需要改变的时候使用，而监控指令则通常是常态性的工作。_NEWLINE_可透过SNMP访问的变量以层次结构的方式结合。这些分层和其他元数据（例如变量的类型和描述）以管理信息库（MIBs）的方式描述。
_START_SECTION_
SNMP架构
_START_PARAGRAPH_
从体系结构上来讲，SNMP框架由主代理、子代理和管理站组成。
_START_SECTION_
主代理
_START_PARAGRAPH_
主代理是一个在可执行SNMP的网络组件上运作的软件，可回应从管理站发出的SNMP要求。它的角色类似客户端/服务器结构（Client/Server）术语中的服务器。主代理依赖子代理提供有关特定功能的管理信息。_NEWLINE_如果系统当前拥有多个可管理的子系统，主代理就会传递它从一个或多个子代理处收到的请求。这些子代理在一个子系统以及对那个子系统进行监测和管理操作的接口内为关心的对象建模。主代理和子代理的角色可以合并，在这种情况下我们可以简单的称之为代理（agent）。
_START_SECTION_
管理站
_START_PARAGRAPH_
管理者或者管理站提供第三个组件。它和一个客户端/服务器结构下的客户端一样工作。它根据一个管理员或应用程序的行为发出管理操作的请求，也接收从代理处获得的TRAP。
_START_SECTION_
SNMP第二版SMI信息模块
_START_PARAGRAPH_
SNMP第二版SMI也指定了信息模块来详细说明一群相关连的定义。有三种SMI信息模块：MIB模块、回应状态、能力状态。
_START_SECTION_
第二版
_START_PARAGRAPH_
SNMP第二版（RFC 1441–RFC 1452）修订了第一版并且包含了在性能、安全、机密性和管理者之间通信这些领域的改进。它引入了GETBULK以取代反复的GETNEXT，藉以在单个请求中获取大量的管理数据。然而，SNMP第二版的新安全系统被认为过于复杂，而不被广泛接受。_NEWLINE_SNMP v2c（基于社群的SNMP第二版）定义于RFC 1901–RFC 1908，一开始也非正式的被称为SNMP第1.5版。SNMPv2c包含SNMP第二版除了受争议的新SNMP第二版安全模型以外的部分，并以SNMP第一版的简单的基于社群的安全性方案取而代之。_NEWLINE_SNMP v2u（基于用户的SNMP第二版）定义于RFC 1909–RFC 1910。这是一个SNMP第一版和SNMP第二版的折衷方案，试图提供比SNMP第一版更好的安全性，又不遭遇SNMP第二版的高复杂度。这产生一个被商业化的变种，称为SNMP v2*，而且它的机制最后被SNMP第三版的两个安全性框架之一采用。
_START_SECTION_
SNMP第一版和SNMPv2c的互操作性
_START_PARAGRAPH_
在当前的指定中，SNMP第二版和SNMP第一版在两个关键领域不兼容：消息格式和协议操作。SNMPv2c消息使用和SNMP第一版不同的标头和协议数据单元（PDU）格式。SNMPv2c也使用两个没有在SNMP第一版指定的协议操作。此外，RFC 1908定义两个可能的SNMP第一版/第二版共存策略：代理服务器代理（proxy agents）和双语网络管理系统（bilingual network-management systems）。
_START_SECTION_
第三版
_START_PARAGRAPH_
Internet工程工作小组（IETF）把在RFC3411-RFC3418（STD0062）中定义的SNMP第三版作为2004年的标准版本。IETF将先前的版本定为“Obsolete”或“Historical”。_NEWLINE_实际上，SNMP实现通常支持多个版本：典型的SNMPv1、SNMPv2c以及SNMPv3。参见RFC3584“Internet标准网络管理框架第一、二、三版间的共存”。_NEWLINE_SNMP第三版提供三项重要的服务：认证、隐私和访问控制。
_START_SECTION_
SNMP v3
_START_PARAGRAPH_
由于 SNMP v3 加强了安全设计，访问上要提供较多信息
_START_SECTION_
透过PHP 访问
_START_PARAGRAPH_
1 if (function_exists('snmp3_get')) { 2 $result = snmp3_real_walk( 3 '10.33.1.1',         // 要監視的主機 4 'user',                  // 存取SNMP 服務的帳號 5 'authPriv',              // 安全等級(要認證也要傳輸加密) 6 'SHA',                   // 認證密碼的保護方式 7 'userpass',              // 認證用密碼 8 'AES',                   // 傳輸加密方式 9 'userpass',              // 傳輸用密鑰10 '1.3.6.1.2.1.25.3.3.1.2' // 監看所有CPU core 的負載狀況，編號為CPU 負載狀況的OID11 );12 print_r($result);13 }14 15 Array16 (17     [HOST-RESOURCES-MIB::hrProcessorLoad.196608] => INTEGER: 718     [HOST-RESOURCES-MIB::hrProcessorLoad.196609] => INTEGER: 1119 )