snmp报文分析_第1页
snmp报文分析_第2页
snmp报文分析_第3页
snmp报文分析_第4页
snmp报文分析_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SNMP报文格式分析1.5 NMP艮文格式1.6 snmp简介1.6.1 snmp工作原理SNM睬用特殊白客户机/服务器模式,即代理/管理站模型。对网络的管理与维护是通过管理工作站与SNM就理间的交互工作完成的。每个SNMPI代理负责回答SNMPf理工作站(主代理)关于MIB定义信息的各种查询。管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。1.6

2、.2 snmp报文类型SNM珅定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap。1. Get-Request、Get-Next-Request与Get-ResponseSNMPf理立if用Get-Request消息从拥有SNM玳理的网络设备中检索信息,而SNM有理贝U用Get-Response消息响应。Get-Next-Request用于和Get-Request组合起来查询特定的表对象中的列元素。2. Set-RequestSNMPf理立if用Set-Request可以对网络设备进行远程配置(包括设备名、设

3、备属性、删除设备或使某一个设备属性有效/无效等)。3. TrapSNM代理使用Trap向SNMPT理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWNIP地址更改等。上面五种消息中Get-Request、Get-Next-Request和SetRequest是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UD的装。1.6.3 snmp报文格式图SNMP艮文的形式大致如下图所示。IP数据报UDF数据报?字节名字节SNIVIF报文皿首部公共5NMF首都群也机首都变

4、量绑定版本CO)蝌 体FW类型(3)请求榇识 箱差错状态(05)差错 索引名值名值 IF首部PDU类型C43企业代理的tmp类型特定时间IP蚓址5】名值tr,中首都变量绑定1.7 snmp报文编码格式SNM哨单网络管理协议)是目前在计算机网络中用得最广泛的网络管理协议,它使用ASN.1(AbstractSyntaxNotationOne抽象语法表示法.1)来定义SNMP艮文格式和MIB(ManagementInformationBase管理信息库)变量的名称。1.7.1 ASN.1ASN.1是一种描述数据和数据特征的正式语言,它和数据的存储及编码无关。根据ASN.1标准定义,数据类型分为:a.

5、简单数据类型:boolean布尔值null空integer整型real实数octerstring八进制字符串objectidentifier对象标识ipaddressIP地址timeticks时刻值等。b.构造数据类型:sequence序歹!Jsequenceofsetsetofchoice等。构造数据类型提供一种或多种简单数据类型进行复合的方法。1.7.2 基本编码规则BER在具体系统中,我们需要用具体的编码规则将ASN.1语法表示的抽象数据转换成具体的比特流。SNM夜用的编码方法是BER(BasicEncodingRule)。BER勺数据都由三个域构成:标识域(tag)+长度域(lengt

6、h)+值域(value)。1.标识域Tag表示:数据类型编码十六进制表不数据类型编码十六进制表示BOOL0x01INT0x02数据类型编码十六进制表不数据类型编码十六进制表示OCTSTR0x04NULL0x05OBJID0x06ENUM0x0ASEQ0x30SETOF0x31IPADDR0x40COUNTER0x41GAUGE0x42TIMETICKS0x43OPAQUE0x44GET0xA0GETNEXT0xA1GETResp0xA2SET0xA3TRAP0xA42.长度域length表示长度域用于指示后续的值域value的字节数。但是这个长度域自身多长怎么确定呢?SNMP!用的是变长表示法

7、,这有点类似与UTF8的编码方式。具体表示方法如下:(1)如果值域的长度在0到127字节之间,那么就是一个字节来表示,即第一个最高位为0的时候,其值就代表了值域的长度。(2)如果值域的长度在127字节以上,那么第一个字节的第一个bit位(为1)就用于指示值域的长度在127字节以上,后7个bit位(实际值)以及后续用于表示值域长度的字节数。例如:值域长度(十进制)编码表不(十六进制)解释160x10在0到127之间,直接表示1600x810xA00x81的二进制为10000001第一位表示其超过127,低7位表示后续还有一个字节来表示值域字节数。0xA0表示值域的长度为160个字节。值域长度(十

8、进制)编码表不(十六进制)解释15000x820x050xDC第一个字节0x82表示后续还有两个字节表示值域长度,0x05DC的十进制值为1500因为绝大部分情况下,值域的长度都在0,127】区间内,所有这种表示方法最节约。1.8 snmp报文介绍1.8.1 SNMP首部SNMP艮文的首部指明了这个报文是SNMPJ、议报文,以及报文的字节数。SNMP艮文的第一个字节用于表示这是一个SNMP艮文,就是0x30。在第一个字节之后是一个长度域,用于告知后面的SNMP艮文的总字节数(不包括前面的0x30和这个长度域所占的字节数)。如下所示:0x30length后面的内容,字节数为length.标识域长

9、度域值域1.8.2 SNMP版本表示前三个字节是SNM版本的内容。0x02,0x01,0x01.0x02是标识域,表示的是值域类型为Integer0x01是长度域,表示后续值域的长度为1个字节0x01是值域,表示版本为SNMPv2cSNM版本编码(十六进制)SNM版本编码(十六进制)V10x00V2C0x01V30x021.8.3 Community共同体表示共同体部分这里一共占了8个字节。如:x04,0x06,0x70,0x75,0x62,0x6c,0x69,0x630x04是标识域,表示值域类型为(OCTSTR)0x06是长度域,表示值域的长度为6个字节7075626c6963是值域的内容

10、,是群体名public的assic码值1.8.4 PUD表示这个部分内容比较多,但都是基于BERf式编码出来的。内容举例如下:a223020422708bd402010002010030153013060e2b060104018ca65e01010101010002012b1. PDlM型上面的第一个字节0xa2就是表示这个PDUW类型。见下表PDUI1型编码名称0xA0get-request0xA1get-next-requestPDUI1型廊名称0xA2get-response0xA3set-request0xA4trap(notification)0xA5GetBulk(SNMPv2增加

11、)0xA6Inform(SNMPv2增力口)2. PU昧度域0xa2后一个字节是这个PUD勺长度域,0x23表示后面的值域是35个字节。3. get/set表示SNMP5该说是有三种操作,get/set/trap,又可细分为上面表格中的5中PDU型。其中get和set有共同之处,这里先以get的来做说明。(1)请求标识符RequestID这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDPt送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。举例

12、:020422708bd40x02是标识域,表示值域为整型数据0x04是长度域,表示值域长度为4个字节0x22708bd4是值域,就是一个整数而已。(577801172)(2)错误状态error-state错误状态是用于告知管理进程,代理进程对其发出的请求的处理结果的状态的。举例:0201000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节0x00是值域,表示没有出错错误状态的编码如下表所示:编码名字说明0noError一切正常1tooBig代理无法将回答装入到一个SNMP艮文之中2noSuchNam爨作指明了一个不存在的变量3badValue一个set操作指明J一

13、个无效值或无效语法4readOnly管理进程试图修改一个只读变量5genErr某些其他的差错(3)错误索引error-index当出现noSuchNamebadValue或readonly的差错时(见上表),由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。举例:0201000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节0x00是值域,因为没有出错,所以这里为01.3.5变量绑定变量绑定就是跟在错误索引后面的一系列变量。这些变量同样也采取BE就式的编码规则在get或get-next报文中,变量的值应忽略1.3.6trap(notificati

14、on)PUD勺类型如果不是上面的所述的get/set那就应该是trap(notification)类型了。trap部分的编码字节流大致如下分布形式:时间戳OIDtrap类型特定代码变量绑定1.OID:第一个部分是指trap报文对应的网络设备的对象标识符。此对象标识符肯定是在enterprise结点1.3.6.1.4.1下面的一棵子树上。2.trap类型此字段正式的名称是generic-trap,共分为下表中的7种trap口名字说明0coldStart代理进行了初始化1warmStart代理进行了重新初始化2linkDown一个接口从工作状态变为故障状态3linkUp一个接口从故障状态变为工作状

15、态4authenticationFailure从SNMPT理进程接收到具有一个无效共同体的报文5egpNeighborLoss一个EGPf邻路由器变为故障状态trap类型6名字enterprisespecific说明代理自定义的事件,需要用后面的“特定代码”来指明3 .当使用上述类型2、3、5时,在报文后面变量绑定部分的第一个变量应标识响应的接口。4 .特定代码(specific-code)指明代理自定义的时间(若trap类型为6),否则为0。时间戳(timestamp)指明自代理进程初始化到产生trap报告的事件发生所经历的时间,例如时间戳为1230表明在代理初始化后1230ms发生了该时间

16、。6 .变量绑定(variable-bindings)指明一个或多个变量的名和对应的值。也是采用的BE颜码规1.4数据类型的编码表示下面介绍一些变量类型的编码表示方法。1.4.1 Integer整型编码表示整型数据的标识域编码是0x02,长度域不定,一般是1/2/4字节等。整型数据的值域是带符号类型,最高位是符号位,采取补码的表示形式。要注意的是,其是大端表示法(高地址存低位)。1.4.2 OID对象标识符编码表示SNM用艮务器维护的所有管理信息库(MIB)对象采用ObjectID表示,如,136.121.1.1表示MIB库中的设备描述SysDesc变量,其编码规则如下:标识域编码为0x06,

17、长度域根据情况而定,值域的编码比较复杂,如下所示。1. 首两个ID被合并为一个字节X*40+Y。例如:1.3合并为1x40+3=43=0x2B2 .后续的ID,如果在区间1,127内,直接编码表示,如果大于127,那么按照下面(3)所述方法编码。3 .如果ID大于127,那么使用多个字节来表示。a.这多个字节中除最后一个字节外,前面的字节最高位为1b.这多个字节的最后一个字节的最高位为0c.这里每个字节剩下的7个比特位用来表示实际的数值例如201566这个数,用十六进制表示是0x03135e,那么用二进制表示是000110001001101011110。注意上面是以7个比特位为单位进行分划的,

18、现在我们来填充最局位。将前面的最高位填1,最后一个最高位填0即可得到100011001010011001011110用十六进制表示为0x8ca65e1.4.3sequence组合类型sequence表示其由多个数据组合而成,每一个数据也都还是采用的BE颜码方法。例如我们这里分析的数据包中就要一个sequence类型的数据,其值域又是有一个OID类型的数据和一个Integer类型的数据组合而成的。见2.1实例。2.分析报文2.1 get-next-request报文示例分析(a.hex)先使用hexdump来查看一下获取到的报文内容。(hexdump是一个很好用的十六进制分析工具)oo-pc:/

19、snmpPUD$hexdump-Ca.hex00000000302c02010104067075626c6963a11f02|0,.public.000000100422708bd40201000201003011300f06|.p0.0.|000000200b2b060104018ca65e0101010500|.+八.|十六进制 数据302c02 01 010000002e解释消息长度44字节(表示后面还有44个字节的内容)表示SNM新议报文(整个报文是一个SEQUENCE)协议版本(2c)(前两个字节02表示INTEGERS型01是指1个字节长度,最后的01是值01)十六进制 数据040

20、6解释参数类型(OCTSTR)70 75 626c 69 63群体名public 的assic码值al1f02 04 2270 8b d402 01 00PU展型 get-next-requestsnmp pdu的长度为31个OctStr(后面的内容31字节)请求标识符Request ID表示 error-state 为 002 01 0030 1130 0f060b表示 error-index 为 0表示后面变量绑定是SEQUENCE型17个字节长度表示(变量名1表示该字段是OID类型OID长度11字节2b 06 0104 01136.1.4.1( 标识1.3被合并为2B)群体(community)名长度8ca65e201566(这也是根据规则转换得到的)0101011.1.10500表示NULL2.2 get-response报文示例分析(b.hex)报文内容:oo-pc:/snmpPUD$hexdump-Cb.hex00000000303002010104067075626c6963a22302|00.public.#.|十

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论