标题：简单网络管理协议
简介
  SNMP 是专门设计用于在 IP 网络管理网络节点（服务器、工作站、路由器、交换机及 HUBS 等）的一种标准协议，它是一种应用层协议。 SNMP 使网络管理员能够管理网络效能，发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息（及事件报告）网络管理系统获知网络出现问题。
组成部分
SNMP 管理的网络有三个主要组成部分：管理的设备、代理和网络管理系统。管理设备是一个网络节点，包含 SNMP 代理并处在管理网络之中。被管理的设备用于收集并储存管理信息。通过 SNMP ， NMS 能得到这些信息。被管理设备，有时称为网络单元，可能指路由器、访问服务器，交换机和网桥、 HUBS 、主机或打印机。 SNMP 代理是被管理设备上的一个网络管理软件模块。 SNMP 代理拥有本地的相关管理信息，并将它们转换成与 SNMP 兼容的格式。 NMS 运行应用程序以实现监控被管理设备。此外， NMS 还为网络管理提供了大量的处理程序及必须的储存资源。任何受管理的网络至少需要一个或多个 NMS 。
架构方式
主代理主代理是一个在可运行SNMP的网络组件上运作的软件，可回应从管理站发出的SNMP要求。它的角色类似客户端/服务器结构（Client/Server）术语中的服务器。主代理依赖子代理提供有关特定功能的管理信息。
如果系统当前拥有多个可管理的子系统，主代理就会传递它从一个或多个子代理处收到的请求。这些子代理在一个子系统以及对那个子系统进行监测和管理操作的接口内为关心的对象建模。主代理和子代理的角色可以合并，在这种情况下我们可以简单的称之为代理（agent）。子代理子代理是一个在可运行SNMP的网络组件上运作的软件，运行在特定子系统的特定管理信息库（MIB，Management Information Base）中定义的信息和管理功能。子代理的一些能力有：
搜集主代理的信息
配置主代理的参数
回应管理者的要求
产生警告或陷阱
对协议和管理信息结构的良好分离使得使用SNMP来监测和管理同一网络内上百的不同子系统非常简单。MIB模型运行管理OSI参考模型的所有层，并可以扩展至诸如数据库，电子邮件以及J2EE参考模型之类的应用。管理站管理者或者管理站提供第三个组件。它和一个客户端/服务器结构下的客户端一样工作。它根据一个管理员或应用程序的行为发出管理操作的请求，也接收从代理处获得的TRAP。
协议种类
目前， SNMP 有 3 种： SNMPV1 、 SNMPV2 、 SNMPV3。第 1 版和第 2 版没有太大差距，但 SNMPV2 是增强版本，包含了其它协议操作。与前两种相比， SNMPV3 则包含更多安全和远程配置。为了解决不同 SNMP 版本间的不兼容问题， RFC3584 种定义了三者共存策略。
SNMP 还包括一组由 RMON 、 RMON2 、 MTB 、 MTB2 、 OCDS 及 OCDS 定义的扩展协议。
协议结构
SNMP 是一种应用程序协议，封装在 UDP 中。各种版本的 SNMP 信息通用格式如下所示： 
Version Community PDU 
Version：SNMP 版本号。管理器和代理器必须使用相同版本的 SNMP。需要删除具有不同版本号的信息，并不对它们作进一步的处理。 
Community：团体名称，用于在访问代理器之前认证管理器。 
PDU（协议数据单元）：SNMPv1、v2 和 v3 中的 PDU 类型和格式将在对应文件中作具体介绍。
开发和使用
第一版SNMP的第一个RFC系列出现在1988年：
RFC 1065：基于TCP/IP网络的管理信息的结构和认定
RFC 1066：以基于TCP/IP网络的网络管理为基础的管理信息
RFC 1067：一个简单网络管理协议
这些协议被废除经由：
RFC 1155：基于TCP/IP网络的管理信息的结构和认定
RFC 1156：以基于TCP/IP网络的网络管理为基础的管理信息
RFC 1157：一个简单网络管理协议
SNMP协议工作在OSI模型的应用层（第七层）。它（在第一版中）指定了四种核心协议数据单元（PDU）：
GET，用来得到一条管理信息
GETNEXT，用来反复得到管理信息的串行
SET，用来给一个被管理的子系统制造一个变化
TRAP，用来报告一个关于被管理子系统的警告或其他异步事件
典型的，SNMP为代理使用UDP端口161，为管理站使用UDP端口162。
第一版因为其脆弱的安全性而备受争议。客户端的认证使用明码传送。在80年代，SNMP第一版被设计出来的时期，互联网标准的认证/安全并不被主要的协议设计团体所重视。
第二版SNMP第二版（RFC 1441–RFC 1452）修订了第一版并且包含了在性能、安全、机密性和管理者之间通信这些领域的改进。它引入了GETBULK以取代反复的GETNEXT，藉以在单个请求中获取大量的管理数据。然而，SNMP第二版的新安全系统被认为过于复杂，而不被广泛接受。
SNMP v2c（基于社区的SNMP第二版）定义于RFC 1901–RFC 1908，一开始也非正式的被称为SNMP第1.5版。SNMPv2c包含SNMP第二版除了受争议的新SNMP第二版安全模型以外的部份，并以SNMP第一版的简单的基于社区的安全性方案取而代之。
SNMP v2u（基于用户的SNMP第二版）定义于RFC 1909–RFC 1910。这是一个SNMP第一版和SNMP第二版的折衷方案，试图提供比SNMP第一版更好的安全性，又不遭遇SNMP第二版的高复杂度。这产生一个被商业化的变种，称为SNMP v2*，而且它的机制最后被SNMP第三版的两个安全性框架之一采用。
第三版Internet工程工作小组（IETF）把在RFC3411-RFC3418（STD0062）中定义的SNMP第三版作为2004年的标准版本。IETF将先前的版本定为“Obsolete”或“Historical”。
实际上，SNMP实现通常支持多个版本：典型的SNMPv1、SNMPv2c以及SNMPv3。参见RFC3584“Internet标准网络管理框架第一、二、三版间的共存”。
SNMP第三版提供三项重要的服务：认证、隐私和访问控制。
SNMP简单配置：
一、Cisco 设备配置 SNMP 命令 
配置 Cisco 设备的 SNMP 代理及口令 
注意：此时 STRING 尽量不要配置为 PUBLIC 或者 PRIVATE 
snmp-server community string [view view-name] [RO | RW] [LROwner | SystemOwner] 
[access-list-name] 
no snmp-server community string 
配置 Cisco 设备的 SNMP Trap 
snmp-server host address [traps] [version {1 | 2c | 3 {auth | noauth | priv}}] community-string 
[udp-port port] [notification-type] 
no snmp-server host address [traps] [version {1 | 2c | 3 {auth | noauth | priv}}] 
community-string [udp-port port] [notification-type] 
配置 Cisco 设备的 SNMP Trap 的接收服务器 
snmp-server traps [notification-type] 
no snmp-server traps [notification-type] 
二、Cisco 设备配置 SNMP 举例 
Router>enable 
Router# configure terminal 
Router(config)# snmp-server community public ro 
Router(config)# snmp-server host 10.10.10.5 ni-view 
Router(config)# snmp-server trap link ietf 
Router(config)# snmp-server enable traps snmp [1]