版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SNMP报文格式分析1.SNMP报文格式1.1 snmp简介1.1.1 snmp工作原理SNMP采用特殊的客户机/服务器模式,即代理/管理站模型。对网络的管理与维护是通过管理工作站与SNMP代理间的交互工作完成的。每个SNMP从代理负责回答SNMP管理工作站(主代理)关于MIB定义信息的各种查询。管理站和代理端使用MIB进行接口统一,MIB定义了设备中的被管理对象。管理站和代理都实现相应的MIB对象,使得双方可以识别对方的数据,实现通信。 管理站向代理请求MIB中定义的数据,代理端识别后,将管理设备提供的相关状态或参数等数据转换成MIB定义的格式,最后将该信息返回给管理站,完成一次管理操作。&
2、#160;1.1.2 snmp报文类型SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap 。 1. Get-Request 、Get-Next-Request与Get-Response SNMP 管理站用Get-Request消息从拥有SNMP代理的网络设备中检索信息,而SNMP代理则用Get-Response消息响应。Get-Next- Request用于和Get-Request组合起来查询特定的表对象中的列元素。2Set-Request SNMP管理站用Set-Re
3、quest 可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。 3. Trap SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件的发生,如接口UP/DOWN,IP地址更改等。 1 / 13上面五种消息中Get-Request、Get-Next-Request和Set-Request是由管理站发送到代理侧的161端口的;后面两种Get-Response和Trap 是由代理进程发给管理进程的,其中Trap消息被发送到管理进程的162端口,所有数据都是走UDP封装。1.1.3 snmp报文格式图SNM
4、P报文的形式大致如下图所示。1.2 snmp报文编码格式SNMP(简单网络管理协议)是目前在计算机网络中用得最广泛的网络管理协议,它使用ASN.1(Abstract Syntax Notation One抽象语法表示法.1)来定义SNMP报文格式和MIB(Management Information Base管理信息库)变量的名称。1.2.1 ASN.1ASN.1是一种描述数据和数据特征的正式语言,它和数据的存储及编码无关。根据ASN.1标准定义,数据类型分为: a.简单数据类型: boolean布尔值null空integer整型real实数octerstring八进制字符串obje
5、ct identifier对象标识ipaddressIP地址time ticks时刻值等。b.构造数据类型:sequence序列sequence of setset ofchoice等。构造数据类型提供一种或多种简单数据类型进行复合的方法。1.2.2基本编码规则BER在具体系统中,我们需要用具体的编码规则将ASN.1语法表示的抽象数据转换成具体的比特流。SNMP使用的编码方法是BER(Basic Encoding Rule)。BER的数据都由三个域构成:标识域(tag) + 长度域(length) + 值域(value)。1. 标识域Tag表示:数据类型编码十六进制表示数据类型编码十六进制表示
6、BOOL0x01INT0x02OCTSTR0x04NULL0x05OBJID0x06ENUM0x0ASEQ0x30SETOF0x31IPADDR0x40COUNTER0x41GAUGE0x42TIMETICKS0x43OPAQUE0x44GET0xA0GETNEXT0xA1GETResp0xA2数据类型编码十六进制表示数据类型编码十六进制表示SET0xA3TRAP0xA42.长度域length表示长度域用于指示后续的值域value的字节数。但是这个长度域自身多长怎么确定呢?SNMP使用的是变长表示法,这有点类似与UTF8的编码方式。具体表示方法如下: (1)如果值域的长度在0到127字节之间,
7、那么就是一个字节来表示,即第一个最高位为0的时候,其值就代表了值域的长度。 (2)如果值域的长度在127字节以上,那么第一个字节的第一个bit位(为1)就用于指示值域的长度在127字节以上,后7个bit位(实际值)以及后续用于表示值域长度的字节数。 例如:值域长度(十进制)编码表示(十六进制)解释160x10在0到127之间,直接表示1600x81 0xA00x81的二进制为1000 0001第一位表示其超过127,低7位表示后续还有一个字节来表示值域字节数。0xA0表示值域的长度为160个字节。15000x82 0x05 0xDC第一个字节0x82表示后续还有两个字节表示值域长度,0x05D
8、C的十进制值为1500因为绝大部分情况下,值域的长度都在【0,127】区间内,所有这种表示方法最节约。1.3 snmp报文介绍1.3.1 SNMP首部SNMP报文的首部指明了这个报文是SNMP协议报文,以及报文的字节数。SNMP报文的第一个字节用于表示这是一个SNMP报文,就是0x30。在第一个字节之后是一个长度域,用于告知后面的SNMP报文的总字节数(不包括前面的0x30和这个长度域所占的字节数)。如下所示:0x30length后面的内容,字节数为length.标识域长度域值域1.3.2 SNMP版本表示前三个字节是SNMP版本的内容。0x02,0x01,0x01.0x02是标识域,表示的是
9、值域类型为Integer0x01是长度域,表示后续值域的长度为1个字节0x01是值域,表示版本为SNMP v2c。SNMP版本编码(十六进制)V10x00V2C0x01V30x021.3.3 Community共同体表示共同体部分这里一共占了8个字节。如:x04,0x06,0x70,0x75,0x62,0x6c,0x69,0x630x04是标识域,表示值域类型为(OCTSTR)0x06是长度域,表示值域的长度为6个字节 70 75 62 6c 69 63是值域的内容,是群体名public的assic码值1.3.4 PUD表示这个部分内容比较多,但都是基于BER形式编码出来的。内容举例
10、如下:a2 23 02 04 22 70 8b d4 02 01 00 02 01 00 30 15 30 13 06 0e 2b 06 01 04 01 8c a6 5e 01 01 01 01 01 00 02 01 2b1. PDU类型上面的第一个字节0xa2就是表示这个PDU的类型。见下表PDU类型编码名称0xA0get-request0xA1get-next-request0xA2get-response0xA3set-request0xA4trap(notification)0xA5GetBulk(SNMPv2增加)0xA6Inform(SNMPv2增加)2. PUD长度域0xa2
11、后一个字节是这个PUD的长度域,0x23表示后面的值域是35个字节。3. get/set表示SNMP应该说是有三种操作,get/set/trap,又可细分为上面表格中的5中PDU类型。其中get和set有共同之处,这里先以get的来做说明。(1)请求标识符Request ID这是由管理进程设置的一个整数值。代理进程在发送get-response报文时也要返回此请求标识符。管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。设置了请求标识符可使管理进程能够识别返回的响应报文对于哪一个请求报文。举例:02 04 22 70 8b d40x02是标识域,表示值域为
12、整型数据0x04是长度域,表示值域长度为4个字节0x22 70 8b d4是值域,就是一个整数而已。(577801172)(2)错误状态error-state错误状态是用于告知管理进程,代理进程对其发出的请求的处理结果的状态的。举例:02 01 000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节0x00是值域,表示没有出错错误状态的编码如下表所示:编码名字说明0noError一切正常1tooBig代理无法将回答装入到一个SNMP报文之中2noSuchName操作指明了一个不存在的变量3badValue一个set操作指明了一个无效值或无效语法4readOnly管理进
13、程试图修改一个只读变量5genErr某些其他的差错(3)错误索引error-index当出现noSuchName、badValue或readOnly的差错时(见上表),由代理进程在回答时设置的一个整数,它指明有差错的变量在变量列表中的偏移。举例:02 01 000x02是标识域,表示值域为整型数据0x01是长度域,表示值域长度为1个字节0x00是值域,因为没有出错,所以这里为01.3.5 变量绑定变量绑定就是跟在错误索引后面的一系列变量。这些变量同样也采取BER形式的编码规则。在get或get-next报文中,变量的值应忽略。1.3.6 trap(notification)PUD的类型如果不是
14、上面的所述的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一个接口从故障状态变为工作状态4authentic
15、ationFailure从SNMP管理进程接收到具有一个无效共同体的报文5egpNeighborLoss一个EGP相邻路由器变为故障状态6enterpriseSpecific代理自定义的事件,需要用后面的“特定代码”来指明3当使用上述类型2、3、5时,在报文后面变量绑定部分的第一个变量应标识响应的接口。4. 特定代码(specific-code)指明代理自定义的时间(若trap类型为6),否则为0。时间戳(timestamp)指明自代理进程初始化到产生trap报告的事件发生所经历的时间,例如时间戳为1230表明在代理初始化后1230ms发生了该时间。6.变量绑定(variable-bindin
16、gs)指明一个或多个变量的名和对应的值。也是采用的BER编码规则。1.4 数据类型的编码表示下面介绍一些变量类型的编码表示方法。1.4.1 Integer整型编码表示整型数据的标识域编码是0x02,长度域不定,一般是1/2/4字节等。整型数据的值域是带符号类型,最高位是符号位,采取补码的表示形式。要注意的是,其是大端表示法(高地址存低位)。1.4.2 OID对象标识符编码表示SNMP服务器维护的所有管理信息库(MIB)对象采用ObjectID表示,如,1.3.6.1.2.1.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这个数,用十六进制表示是0x03 13 5e,那么用二进制表示是000 1100 010 0110 101 1110。注意上
18、面是以7个比特位为单位进行分划的,现在我们来填充最高位。将前面的最高位填1,最后一个最高位填0即可得到1000 1100 1010 0110 0101 1110用十六进制表示为0x8c a6 5e1.4.3 sequence组合类型sequence表示其由多个数据组合而成,每一个数据也都还是采用的BER编码方法。例如我们这里分析的数据包中就要一个sequence类型的数据,其值域又是有一个OID类型的数据和一个Integer类型的数据组合而成的。见2.1实例。2.分析报文2.1 get-next-request报文示例分析(a.hex)先使用hexdump来查看一下获取到的
19、报文内容。(hexdump是一个很好用的十六进制分析工具)oo-pc:/snmpPUD$ hexdump -C a.hex 00000000 30 2c 02 01 01 04 06 70 75 62 6c 69 63 a1 1f 02 |0,.public.|00000010 04 22 70 8b d4 02 01 00 02 01 00 30 11 30 0f 06 |."p.0.0.|00000020 0b 2b 06 01 04 01 8c a6 5e 01 01 01 05 00 |.+.|0000002e十六进制数据解释30表示SNMP协议报文(整个报文是一个SEQUE
20、NCE)2c消息长度44字节(表示后面还有44个字节的内容)02 01 01协议版本(2c)(前两个字节02表示INTEGER类型01是指1个字节长度,最后的01是值01)04参数类型(OCTSTR)06群体(community)名长度70 75 62 6c 69 63群体名public的assic码值a1PUD类型get-next-request1fsnmp pdu的长度为31个OctStr(后面的内容31字节)02 04 22 70 8b d4请求标识符Request ID02 01 00表示error-state为002 01 00表示error-index为030 11表示后面变量绑定是SEQUENCE类型17个字节长度30 0f表示(变量名106表示该字段是OID类型0bOID长度11字节2b 06 01 04 011.3.6.1.4.1(标识1.3被合并为2B)8c a6 5e201566 (这也是根据规则转换得到的)01 01 011.1.105 00表示NULL2.2 get-response报文示例分析(b.hex)报文内容:oo-pc:/snmpPUD$ hexdump -C b.hex 00000000 30 30 02 01 01 04 06 70 75 62 6c 69 63 a2 23 02 |00.public.#.|00000010 04 22 7
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 语文高一迎期末系列专栏001期-名篇名句默写(学生版)
- 感恩节活动方案(集锦15篇)
- 愚人节个人心得
- 宾馆年终工作总结(汇编15篇)
- 初级会计实务-《初级会计实务》模考试卷651
- 智研咨询发布:2024年中国高压电缆行业竞争格局及发展前景研究报告
- 2024年中国食品安全检测行业市场现状、前景分析研究报告(智研咨询发布)
- 基于眼动数据和视觉信息的自闭症筛查算法研究
- 基于车辆边缘计算的车-边协同跨区任务卸载与资源分配技术研究
- 二零二五年度家校共建教育创新实验区协议范本3篇
- 2024年安徽省高考地理试卷真题(含答案逐题解析)
- 家具厂各岗位责任制汇编
- 2024届浙江宁波镇海区中考生物全真模拟试题含解析
- 人教版八年级物理下册 (功)教育教学课件
- 中药的性能四气五味课件
- 提高检验标本合格率品管圈PDCA成果汇报
- 世界古代史-对接选择性必修(真题再现) 高考历史一轮复习
- 面神经炎课件完整版
- 植物的类群及演化
- 普通生物学考试大纲
- 偏瘫康复体位及健康教育
评论
0/150
提交评论