当前位置:文档之家› SNMP协议运用在发现打印机设备

SNMP协议运用在发现打印机设备

SNMP协议

概念

SNMP(简单网络管理协议)是目前在计算机网络中用的最广泛的网络管理协议,该协议是基于TCP/IP的网管标准,它包括协议本身、数据库的定义和相关概念。可管理对象包括主句、打印机、交换机等。

SNMP此协议管理被管理设备和服务之间的通信,它被设计成一个轮询协议,使用一组简单的命令,设置和检索管理信息库(MIB)中的对象值。管理器发送的SNMP信息保存在UDP(无连接协议)数据报中,并且通过IP路由,因而,使得该代理和管理器驻留在不同的子网上,彼此之间也能通信。

SNMP安装和配置(win 10 为例)

1、安装组件

1)在本地主机上启动SNMP服务并配置共同体:开始(右击)—》控制面板—》程序—》启动或关闭windows 功能

2)查看SNMP组件是否安装成功:开始(右击)—》控制面板—》系统与安全—》管理工具—》服务,服务列表中会出现“SNMP Service”服务

2、配置SNMP服务

1)设置SNMP Service属性

打开“服务”,选择“SNMP Service”,查看“属性”页面,选择“安全”标签页,添加“public”只读团体,并且选择“接收来自任何主机的SNMP数据包”。

2)重新启动SNMP服务

3、查看端口是否开启

选择“开始”——“运行”——输入“netstat -a -n”,按下回车

出现结果,UDP 161 snmp UDP 162 snmptrap 两个snmp端口等,注意SNMP使用的是UDP 协议

SNMP报文

Snmp定义了5种数据协议单元(PDU,也就是5种报文):

1)get - request操作:从代理进程处提取一个或多个参数值。

2)get - next - request 操作:从代理进程处提取一个或多个参数的下一个参数值。

3)Set-request 操作:设置代理进程的一个或多个参数值。

4)Get - response 操作:由代理进程发出的一个或多个参数值。

5)Trap操作:代理进程主动发出的报文,通知管理进程有事情发生。

前面三种是偶管理进程想代理进程发出的,后两个是代理进程发给管理进程的。SNMP报文共有三个部分组成,即公共SNMP首部,get/set首部、trap首部,变量绑定

(1)SNMP 报文的长度取决域变量的类型和值。

(2) 版本字段为0 ,表示为SNMP V1 。

(3) PDU 为协议数据单元,即分组。

(4)

public 。

(5) 对于get 、get-next 和set 操作,请求标识由管理进程设置,然后由代理进程在

get-response 中返回。这个字段的作用是使客户进程(目前是管理进程)能够将服务器进程(即代理进程)发出的响应和客户进程发出的查询进行匹配。这个字段允许管理进程对一个或多个代理进程发出多个请求,并且从返回的应答中分类。

(6)

(7)在get 、get-next 和set 的请求数据报中,包含变量名称和变量值的表,对于get 和get-next 操作,变量值部分被忽略。

SNMP团体名

SNMP提供了一个基本级别的安全性,验证SNMP管理器和SNMP代理之间的发送消息,为每个被发送的SNMP消息添加一个组标识符,就可以进行这种验证。这个标识符就是所谓的SNMP团体名称,所有的SNMP消息必须包含一个团体名称,标准的团体名称是public。

对象标识符(OID)

每台SNMP主机(计算机或网络设备)都有一个或多个MIB,含有该主机上被管理对象的信息。MIB中的每个对象都有一个唯一的标签标识,即所谓的对象标识符(Object Identifier,OID)。

SNMP陷阱

当主机上发生预定的事件时,SNMP代理可以产生一则被称作陷阱(trap)的消息。当代理收到一条含有他没有定义的团体名称的消息时,它将向SNMP管理器发送一条验证陷阱(authentication trap)消息,通知管理器,该主机出现消息验证故障。

SNMP编程

1、SNMP数据类型

数据类型共分为三大类,即:

(1)通用类型(Universal)

该类型通常被称为非聚合类型,在SNMP协议中有4种通用数据类型:

1)INTEGER: 整型,是-2,147,483,648~2,147,483,647的有符号整数;

2)OCTET STRING: 字符串;

3)OBJECT IDENTIFIER: 对象标识符;

4)NULL: 空值。

(2)通用结构类型(Universal-constructed)

结构类型指列表和表格,常被称作聚合类型。在SNMP协议中主要使用两种结构类型:

1)SEQUENCE 用于列表。这一数据类型与大多数程序设计语言中的“structure”类似。一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。

2)SEQUENCE OF type 用于表格。这一数据类型与大多数程序设计语言中的“array”类似。一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。

(3)应用类型(application)

应用数据类型采用隐式定义,是引用SNMP的简单数据类型来定义的。主要有6种:

1)IpAddress: 以网络序表示的IP地址。因为它是一个32位的值,所以定义为4个字节;

2)network address:网络地址,表示从一个特定协议族中选定的网络地址,SNMPv1仅支持32位IP地址;所以与IpAddress等效;

3)counter:计数器是一个非负的整数,它递增至最大值,而后归零。SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;

4)Gauge :也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为2^32-1;

5)time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;

6)opaque:表示用于传递任意信息串的任意编码格式,它与SMI使用的严格数据输入格式不同。

2、开源工具

开源包:snmpget使用SNMP4J框架,snmpwalk使用Java Package开源包,下载地址分别为:/html/download.html

/people/sevy/snmp/

3、信息获取方式

在获取到被管理设备的团体名(community)和IP后,输入相应的对象标识符(OID)获取到被管理设备相关的信息,通过snmpwalk函数进行对被管理设备进行获取或设置信息,snmpwalk具体格式如下:

snmpwalk -v 1或2c(代表SNMP版本) -c community IP地址OID(对象标示符)

Java相关代码详见:/davebobo/article/details/51308601

SNMP刺探信息工具

1、Snmpwalk

snmpwalk是SNMP的一个工具,它使用SNMP的GETNEXT请求查询指定OID(SNMP协议中的对象标识)入口的所有OID树信息,并显示给用户。通过snmpwalk也可以查看支持SNMP 协议(可网管)的设备的一些其他信息,比如cisco交换机或路由器IP地址、内存使用率等,也可用来协助开发SNMP功能。

Windows下安装net-snmp

进入net-snmp官网/download.html 下载net-snmp-5.6.1.1-1.x86.exe工具进行安装

相关主题