文档详情

snmp报文分析整理.docx

发布:2025-06-13约7.48千字共14页下载文档
文本预览下载声明

SNMP报文格式分析

1、SNMP报文格式

1、1snmp简介

1、1、1snmp工作原理

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

管理站和代理端使用MIB进行接口统一,MIB定义了设备中得被管理对象。管理站和代理都实现相应得MIB对象,使得双方可以识别对方得数据,实现通信。

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

1、1、2snmp报文类型

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

Get-Request、Get-Next-Request与Get-Response?

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

2、Set-Request?

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

Trap?

SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件得发生,如接口UP/DOWN,IP地址更改等。?

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

1、1、3snmp报文格式图

SNMP报文得形式大致如下图所示。

1、2snmp报文编码格式

SNMP(简单网络管理协议)就就是目前在计算机网络中用得最广泛得网络管理协议,她使用ASN、1(AbstractSyntaxNotationOne抽象语法表示法、1)来定义SNMP报文格式和MIB(ManagementInformationBase管理信息库)变量得名称。

1、2、1ASN、1

ASN、1就就是一种描述数据和数据特征得正式语言,她和数据得存储及编码无关。根据ASN、1标准定义,数据类型分为:?a、简单数据类型:?

boolean布尔值

null空

integer整型

real实数

octerstring八进制字符串

objectidentifier对象标识

ipaddressIP地址

timeticks时刻值等。

b、构造数据类型:

sequence序列

sequenceofset

setofchoice等。

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

1、2、2基本编码规则BER

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

SNMP使用得编码方法就就是BER(BasicEncodingRule)。BER得数据都由三个域构成:标识域(tag)+长度域(length)+值域(value)。

标识域Tag表示:

数据类型

编码十六进制表示

数据类型

编码十六进制表示

BOOL

0x01

INT

0x02

OCTSTR

0x04

NULL

0x05

OBJID

0x06

ENUM

0x0A

SEQ

0x30

SETOF

0x31

IPADDR

0x40

COUNTER

0x41

GAUGE

0x42

TIMETICKS

0x43

OPAQUE

0x44

GET

0xA0

GETNEXT

0xA1

GETResp

0xA2

SET

0xA3

TRAP

0xA4

2、长度域length表示

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

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

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

值域长度(十进制)

编码表示(十六进制)

解释

16

0x10

显示全部
相似文档