SNMP协议全称为简单网络管理协议(Simple Network Management Protocol),该协议能够被广泛使用,不受协议的限制,如IP、IPX 、AppleTalk、OSI及其它传输协议均能使用。互联网络开始规模很小,网络结构简单,因此谈不上网络监控和管理问题。仅使用ICMP 的Ping 程序就能解决问题。但随着互联网络规模不断扩大,使用Ping 已无法掌握网络运行情况。此时,SNMP协议就产生了,它可通过提供有限的信息类型、简单的请求/响应机制来实现对被管理对象的操作。同时可将管理信息模型和被管理对象分成两个模块,两个模块间通过信令交互协同工作。目前SNMP协议已在TCP/IP 网络中广泛使用,并已成为网络管理领域事实标准。下面简单介绍下SNMP协议的基本概念、管理模型及版本号:
一SNMP协议基本概念
1 NMS
NMS(Network Management System),是运行在网管端工作站上的网络管理软件。网络管理员通过操作NMS,向被管理设备发出请求,从而监控和配置网络设备。
2 Agent
运行在被管理设备上的代理进程。被管理设备在接收到网管设备侧NMS 发出的请求后,由Agent 作出响应操作。主要功能包括:收集设备状态信息、实现NMS 对设备的远程操作、向网管端发出告警消息。
3 MIB
MIB 是一个虚拟的数据库,是在被管理设备端维护的设备状态信息集。Agent 通过查找MIB 来收集设备状态信息。MIB 按照层次式树形结构组织被管理对象,使用ASN.1格式进行描述。
4 ASN.1
抽象语法表示,使用独立于物理传输的方法定义协议标准中的数据类型。ASN.1 描述传输过程的中的语法,但不涉及具体数据含义的表示。
5 BER
基本编码规则,按照ASN.1 的语法结构,描述了在传送过程中数据内容是如何表示的。
6 SMI
SMI(Structor of Management Information)为命名和定义管理对象指定了一套规则。所有管理对象都是按一种层次式树形结构排列。一个对象在这个树形结构中的位置,标识了如何访问这个对象。
7 Trap
告警信息。设备中的模块在达到告警的条件后触发告警,之后将告警消息通过SNMP发往网管端。
8 实体
可以被管理的软件或硬件。
二SNMP 协议管理模型
SNMP 的管理体系,在NMS 和Agent 两侧进行信令交互。
1 网管端工作站上的NMS 作为管理者,向Agent 发送SNMP 请求报文。Agent 通过查询设备端的MIB 得到所要查询的信息,向NMS 发送SNMP 响应报文。
2 设备端的模块由于达到模块定义的告警触发条件,通过Agent 向网管端工作站的NMS 发送Trap 消息,告知设备侧的出现的情况,这样便于网络管理人员及时的对网络中出现的情况进行处理。
三SNMP协议版本号
1 SNMPv1
1990 年5 月,RFC 1157 定义了SNMP 的第一个版本SNMPv1。RFC 1157 提供了一种监控和管理计算机网络的系统方法。SNMPv1 基于团体名认证,安全性较差,且返回报文的错误码也较少。
2 SNMPv2p
后来IETF 颁布了SNMPv2p。SNMPv2p 为了解决安全问题,引入参与者的概念。但由于实际应用中出现的问题,没有得到推广。之后颁布的SNMPv2c 取代了SNMPv2p,去掉了参与者的概念,但仍然沿用SNMPv1 中的团体名进行安全认证。SNMPv2c 中引入了getbulk 操作,提供更多的错误码信息。
3 SNMPv3
鉴于SNMPv2c 在安全性方面没有得到改善,IETF 颁布了SNMPv3 的版本,提供了基于USM(User Security Module)的认证加密和基于V ACM(View-based Access ControlModel)的访问控制。
目前各个生产厂家的数通设备基本都支持以上三个版本号的SNMP协议。
SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。get-request操作:从代理进程处提取一个或多个参数值。get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值。set-request操作:设置代理进程的一个或多个参数值。
get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。
前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图4描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161来接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP 服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。
TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也可以有235端口,两者并不冲突。
1.周知端口(Well Known Port
)
周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给W WW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口号是“80”。
网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在地址栏上指定端口号,方法是在地址后面加上冒号“:”(半角),再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。
但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
2.动态端口(Dynamic Ports)
动态端口的范围是从1024到65535。之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所