1、引言
SNMP:简单网络管理协议
SNMP是关于管理网络中设备的标准
基于TCP/IP的网络管理包含两个部分:网络管理站(也叫管理进程)和被管的网络单元(也叫被管设备)。被管的网络设备都运行TCP/IP协议。被管设备端和管理相关的软件叫做代理程序或代理进程。管理站一般都是带有彩色监视器的工作站,可显示所有被管设备的状态。
管理进程和代理进程之间的通信有两种方式。一种是管理进程向代理进程发出请求,询问一个具体的参数(例如:你产生了多少个不可达的ICMP端口)。另一种方式是代理进程主动向管理进程报告有某些重要事的事件发生(例如:一个连接口掉线了)。管理进程除了可以询问某些参数外,还可按要求改变代理进程的参数值。
基于TCP/IP的网络管理包含3个组成部分:
- 一个管理信息库MIB。管理信息库包含所有代理进程的所有可被查询和修改的参数
- 关于MIB的一套公用的结构和表示符号。叫做管理信息结构 SMI (structure of management information)
- 管理进程和代理进程之间的通信协议,叫做简单网络管理协议SNMP。SNMP包括数据报交换的格式等。在SNMP中,运输层用的最多的协议是UDP。
2、协议
关于管理进程和代理进程之间的交互信息,SNMP定义了5种报文:
- get-request操作:从代理进程处提取一个或多个参数值
- get-next-request操作:从代理进程处提取一个或多个参数的下一个参数值
- set-request操作:设置代理进程的一个或多个参数值
- get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的。它是前面3中操作的响应操作
- trap操作:代理进程主动发出报文,通知管理进程有某些事情发生
图1:SNMP的5种操作
前四种操作是简单请求-应答方式(管理进程发出请求,代理进程应答响应),SNMP往往使用UDP协议。所以可能发生管理进程和代理进程之间数据报丢失的情况,因此一定要有超时和重传机制。
前3种操作采用UDP的161端口,代理进程发出的Trap操作采用UDP的162端口。由于收发采用不同的端口,所以一个系统可以同时为管理进程和代理进程发送数据。
SNMP报文格式如下:
图2 SNMP报文格式
SNMP报文的编码采用ASN.1和BER,报文长度取决于变量的类型和值。
版本字段为0。该字段值是通过SNMP版本号减去1得到。因此表示为SNMP v1