snmp报文分析

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

SNMP报文格式分析

1.SNMP报文格式

1.1 snmp 简介

1.1.1 snmp工作原理

SNM采用特殊的客户机/服务器模式,即代理/管理站模型。对网络的管理与维护是通过管理工作站与SNM代理间的交互工作完成的。每个SNMP从代理负责回答SNM管理工作站(主代理)关于MIB定义信息的各种查询。

管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。

管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。

管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。

1.1.2 snmp报文类型

SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request 和Trap。

1. Get-Request、Get-Next-Request 与Get-Response

SNMP t理站用Get-Request消息从拥有SNM代理的网络设备中检索信息,而SNMP代理则用Get-Response 消息响应。Get-Next- Request 用于和Get-Request 组合起来查询特定的表对象中的列元素。

2. Set-Request

SNM管理站用Set-Request可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。

3. Trap

SNM代理使用Trap向SNM管理站发送非请求消息,一般用于描述某一事

件的发生,如接口UP/DOWNIP地址更改等。

上面五种消息中Get-Request、Get-Next-Request 和Set-Request 是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP 封装。

1.1.3 snmp报文格式图

SNM报文的形式大致如下图所示。

1.2 snmp报文编码格式

SNMP简单网络管理协议)是目前在计算机网络中用得最广泛的网络管理协议,它使用ASN.1(Abstract Syntax Notation One 抽象语法表示法.1)来定义SNM报文格式和MIB(Ma nageme nt In formation Base 管理信息库)变量的名称。

1.2.1 ASN.1

ASN.1是一种描述数据和数据特征的正式语言,它和数据的存储及编码无关根据ASN.1标准定义,数据类型分为:

a.简单数据类型:

boolean布尔值

null 空

integer 整型

real实数

octerstri ng 八进制字符串

object ide ntifier 对象标识

ipaddressIP 地址

time ticks 时刻值等。

b.构造数据类型:

seque nee 序歹U

seque nee of set

set ofchoice 等。

构造数据类型提供一种或多种简单数据类型进行复合的方法。

1.2.2基本编码规则BER

在具体系统中,我们需要用具体的编码规则将ASN.1语法表示的抽象数据转换成具体的比特流。

SNM使用的编码方法是BER(Basic Encoding Rule) 。BER的数据都由三个域构成:标识域(tag)+长度域(length)+值域(value)。

1. 标识域Tag表示:

数据类型编码十八进制表示数据类型编码十八进制表示

BOOL0x01INT0x02

OCTSTR0x04NULL0x05

OBJID0x06ENUM0x0A

SEQ0x30SETOF0x31

IPADDR0x40COUNTER0x41

GAUGE0x42TIMETICKS0x43

OPAQUE0x44GET0xA0

GETNEXT0xA1GETResp0xA2

数据类型编码十八进制表示数据类型编码十八进制表示

SET0xA3TRAP0xA4

2. 长度域length表示

长度域用于指示后续的值域value的字节数。但是这个长度域自身多长怎么确定呢?SNM使用的是变长表示法,这有点类似与UTF8的编码方式。具体表示方法如下:

(1)如果值域的长度在0到127字节之间,那么就是一个字节来表示,即第一个最高位为0的时候,其值就代表了值域的长度。

(2)如果值域的长度在127字节以上,那么第一个字节的第一个bit位(为1)就用于指示值域的长度在127字节以上,后7个bit位(实际值)以及后续用于表示值域长度的字节数。

例如:

值域长度(十进制)

编码表示

(十八进

制)

解释

160x10在0到127之间,直接表示

1600x81 0xA00x81的二进制为1000 0001第一位表示其超过127,低7位表示后续还有一个字节来表示值域字节数。0xA0表示值域的长度为160个字节。

1500

0x82 0x05

0xDC

第一个字节0x82表示后续还有两个字节表示值域长度,0X05DC的

十进制值为1500

因为绝大部分情况下,值域的长度都在【0,127】区间内,所有这种表示方法最

节约。

1.3 snmp报文介绍

1.3.1SNMP 首部

SNM报文的首部指明了这个报文是SNM协议报文,以及报文的字节数。SNM报文的第一个字节用于表示这是一个SNM报文,就是0x30。在第一个字节之后是一个长度域,用于告知后面的SNMf报文的总字节数(不包括前面的0x30 和这个长度域所占的字节数)。如下所示:

相关文档
最新文档