snmp报文分析
- 格式:doc
- 大小:139.50 KB
- 文档页数:11
计算机网络管理课程设计1.引言简单网络管理协议(SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。
SNMP被设计成与协议无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。
它具有简单性,易于扩展性的特点。
SNMP是一系列协议组和规范(见下表),它们提供了一种从网络上的设备中收集网络管理信息的方法。
SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
名字说明MIB 管理信息库SMI 管理信息的结构和标识SNMP 简单网络管理协议从被管理设备中收集数据有两种方法:一种是只轮询(polling-only)的方法,另一种是基于中断(interrupt-based)的方法。
Snmp发展到现在共有三个版本,本课程设计是基于snmpv1版本。
2.设计任务及思想2.1任务:设计一个Manager。
Manager可以向华为网络设备发送get和set报文,并获得有效操作结果,实现版本为SNMPv1.开发工具:VC++(Win32)内容: Socket网络通信、 BER编码、BER解码、SNMP报文构造、SNMP报文解析、用户输入/输出。
2.2思想:根据snmp协议,分析抓包软件抓出的结果。
Manager在进行操作时,先对要发送的报文进行构造,然后对要发送的报文各数据类型依据asn.1进行编码再发送。
agent接收到报文后,进行报文解析,再解码。
看manager的要求是什么,然后回应一个报文,即response 报文,manager即对回应的报文进行解析解码,整个过程由socket通信完成,snmp报文封装在udp中发送。
3设计过程2.1 BER编码和解码Ber编码是整个设计过程中的极为重要的部分,一个报文有很多段组成,每段的数据类型都不尽相同。
snmp报文类型和特点
SNMP报文类型主要包括以下几种:
1. GET:用于获取一条管理信息。
2. GETNEXT:用于反复获取管理信息的序列。
3. SET:用于给一个被管理的子系统设置一个变化。
4. TRAP:用于报告一个关于被管理子系统的警告或其他异步事件。
5. 其他PDU在SNMP第二版中加入,包括GETBULK REQUEST、INFORM等。
SNMP报文的特点包括:
1. SNMP报文在OSI模型的应用层(第七层)运作。
2. SNMPv1是SNMP协议的最初版本,提供最小限度的网络管理功能。
3. SNMP报文的发送者是网络设备上的守护进程,它能够响应来自网络的各种请求信息。
4. SNMP报文的接收者可以是管理工具或代理进程,代理进程在发送get-response报文时也要返回此请求标识符。
5. SNMP报文具有差错状态和差错索引,用于标识和处理报文传输过程中的错误。
6. SNMP报文的Trap部分包含企业(enterprise)、trap类型和特定代码等信息,用于标识网络设备和事件类型。
以上内容仅供参考,如需更多信息,建议查阅相关文献或咨询专业人士。
SNMP五种协议数据单元SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。
∙get-request操作:从代理进程处提取一个或多个参数值(网管系统发送)∙get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值(网管系统发送)∙set-request操作:设置代理进程的一个或多个参数值(网管系统发送)∙get-response操作:返回的一个或多个参数值。
这个操作是由代理进程发出的,它是前面三种操作的响应操作(代理发送)∙trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生(代理发送)前面的3种操作是由管理进程向代理进程发出的,后面的2个操作是代理进程发给管理进程的,为了简化起见,前面3个操作叫做get、get-next和set操作。
下图描述了SNMP的这5种报文操作。
请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。
SNMP的5种报文操作SNMP协议数据单元格式解析下图封装成UDP数据报的5种操作的SNMP报文格式。
可见一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部trap首部、变量绑定。
SNMP报文格式1. 公共SNMP首部1.1 版本写入版本字段的是版本号减1,对于SNMP(即SNMPV1)则应写入0。
1.2 公共体共同体就是一个字符串,作为管理进程和代理进程之间的明文口令,常用的是6个字符“public”。
1.3 PDU类型根据PDU的类型,填入0~4中的一个数字,其对应关系下表所示意图。
表1 PDU类型2. get/set首部2.1 请求标识符(request ID)这是由管理进程设置的一个整数值。
代理进程在发送get-response报文时也要返回此请求标识符。
管理进程可同时向许多代理发出get报文,这些报文都使用UDP传送,先发送的有可能后到达。
实验十四 SNMP协议与网络管理【实验目的】1、理解SNMP协议的工作原理;2、理解SNMP协议的工作过程;3、了解SNMP的报文格式;4、了解MIB的基本概念。
【实验学时】2学时【实验环境】本实验中需要有一台安装网络管理系统的主机和一台被管设备。
使用锐捷RG-S3750-24交换机作为被管设备,在捕获端的主机上事先安装网络管理系统,作为SNMP管理设备(本实验中使用第三方的网络管理软件SolarWinds,版本为Solarwinds Engineer’s Toolset v9.1.0,)。
实验拓扑图如图5- 55所示:图5- 55 实验拓扑图【实验内容】1、通过捕获和仿真SNMP数据包,学习SNMP协议的格式;2、通过捕获SNMP数据包,学习SNMP的工作过程;3、学习如何使用协议分析仪的SNMP连接工具;4、学习SNMP协议的工作原理;5、了解SNMP与UDP的关系;6、学习在交换机上启用SNMP。
153【实验流程】Step2Step1:N Step6:SNMPStep3Step4Step5图5- 56 实验流程图【实验原理】SNMP 是Simple Network Manger Protocol (简单网络管理协议)的缩写,最早由Internet 工程任务组织(Internet Engineering Task Force ,IETF )的研究小组为了解决Internet 上的路由器管理问题而提出。
到目前,因众多厂家对该协议的支持,SNMP 已成为事实上的网管标准,适合于在多厂家系统的互连环境中使用。
利用SNMP 协议,网络管理员可以对网络上的节点进行信息查询、网络配置、故障定位、容量规划,网络监控和管理是SNMP 的基本功能。
SNMP 是一个应用层协议,为客户机/服务器模式,它事实上指一系列网络管理规范的集合,包括协议本身,数据结构的定义和一些相关概念等。
SNMP 的工作体系包括三个部分:z SNMP 网络管理器z SNMP 代理z MIB 管理信息库154SNMP网络管理器,是采用SNMP来对网络进行控制和监控的系统,也称为NMS (Network Management System)。
SNMPTRAP报⽂解析转载地址: https:///eric_sunah/article/details/19557683SNMP的报⽂格式SNMP代理和管理站通过SNMP协议中的标准消息进⾏通信,每个消息都是⼀个单独的数据报。
SNMP使⽤UDP(⽤户数据报协议)作为第四层协议(传输协议),进⾏⽆连接操作。
SNMP消息报⽂包含两个部分:SNMP报头和协议数据单元PDU。
在实际⽹络传输环境下,SNMP报⽂的长度取决于其所采⽤的编码⽅式。
SNMP统⼀采⽤BER(Basic Encoding Rule)的编码规则,同时在正式SNMP规范中使⽤的是ASN.1语法,AbastractSyntax Notation v1,即抽象语法描述语⾔。
这两个概念在后⾯实践环节再做进⼀步介绍,这⾥只要稍微了解⼀下即可,不妨碍我们对协议本⾝的分析。
这⾥我们简单解释⼀下BER编码规则:BER作为ANS.1的基本编码规则,描述具体的ANS.1对象如何编码为⽐特流在⽹络上进⾏传输。
BER编码规则由三部分组成:SNMP中定义了⼏种基本的数据类型,其中v1和v2版有些改动,具体参见相应的RFC⽂档。
这⾥我们只介绍⼏种最常见的类型:l INTEGER:⼀个整数l OCTER STRING: 0或多个8bit字节,每个字节在0~255之间取值l DisplayString:0或多个8bit字节,每个字节必须是ASCII码。
在MIB-II中,所有该类型变量不能超过255个字符(0个字符可以)l NULL:代表相关的变量没有值l IpAddress:4字节长的OCTER STRING,以⽹络字节序表⽰IP地址l PhyAddress:6字节长的OCTER STRING,代表物理地址l Counter:⾮负整数,可以从0递增到232-1()。
达到最⼤值后归0l TimeTicks:时间计数器,以0.01秒为单位递增,不同的变量可以有不同的递增幅度。
简单网络管理协议(SNMP:Simple Network Management Protocol)是由互联网工程任务组(IETF:Internet Engineering Task Force )定义的一套网络管理协议。
该协议基于简单网关监视协议(SGMP:Simple Gateway Monitor Protocol)。
利用SNMP,一个管理工作站可以远程管理所有支持这种协议的网络设备,包括监视网络状态、修改网络设备配置、接收网络事件警告等。
虽然SNMP开始是面向基于IP的网络管理,但作为一个工业标准也被成功用于电话网络管理。
1.网络管理基于TCP/IP的网络管理包含两个部分:网络管理站(也叫管理进程,manager Station)和被管的网络单元(也叫被管设备Network Element)。
被管设备种类繁多,例如:路由器、X 终端、终端服务器和打印机等。
这些被管设备的共同点就是都运行TCP/IP协议。
被管设备端和管理相关的软件叫做代理程序( agent )或代理进程。
管理站一般都是带有彩色监视器的工作站,可以显示所有被管设备的状态(例如连接是否掉线、各种连接上的流量状况等)。
管理进程和代理进程之间的通信可以有两种方式。
一种是管理进程向代理进程发出请求,询问一个具体的参数值(例如:你产生了多少个不可达的ICMP端口)。
另外一种方式是代理进程主动向管理进程报告有某些重要的事件发生(例如:一个连接口掉线了)。
当然,管理进程除了可以向代理进程询问某些参数值以外,它还可以按要求改变代理进程的参数值(例如:把默认的IP TTL值改为6 4)。
基于T C P/IP的网络管理包含3个组成部分:1)管理信息库MIB(Management Information Base)。
管理信息库包含所有代理进程的所有可被查询和修改的参数。
RFC 1213 [McCloghrie and Rose 1991]定义了第二版的MIB,叫做MIB-II;2)管理信息结构SMI(Structure of Management Information)它是关于MIB的一套公用的结构和表示符号,这个在RFC 1155 [Rose and McCloghrie 1990] 中定义。
SNMP协议详解简单⽹络管理协议(SNMP)是TCP/IP协议簇的⼀个应⽤层协议。
在1988年被制定,并被Internet体系结构委员会(IAB)采纳作为⼀个短期的⽹络管理解决⽅案;由于SNMP的简单性,在Internet时代得到了蓬勃的发展,1992年发布了SNMPv2版本,以增强SNMPv1的安全性和功能。
现在,已经有了SNMPv3版本。
⼀套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报⽂协议。
(1)管理信息库MIB:任何⼀个被管理的资源都表⽰成⼀个对象,称为被管理的对象。
MIB是被管理对象的集合。
它定义了被管理对象的⼀系列属性:对象的名称、对象的访问权限和对象的数据类型等。
每个SNMP设备(Agent)都有⾃⼰的MIB。
MIB也可以看作是NMS(⽹管系统)和Agent之间的沟通桥梁。
它们之间的关系如图1所⽰。
图1 NMS Agent和MIB的关系MIB⽂件中的变量使⽤的名字取⾃ISO和ITU管理的对象标识符(object identifier)名字空间。
它是⼀种分级树的结构。
如图2所⽰,第⼀级有三个节点:ccitt、iso、iso-ccitt。
低级的对象ID分别由相关组织分配。
⼀个特定对象的标识符可通过由根到该对象的路径获得。
⼀般⽹络设备取iso节点下的对象内容。
如名字空间ip结点下⼀个名字为ipInReceives的MIB变量被指派数字值3,因⽽该变量的名字为:.dod.internet.mgmt.mib.ip.ipInReceives相应的数字表⽰(对象标识符OID,唯⼀标识⼀个MIB对象)为:1.3.6.1.2.1.4.3 图2 MIB树结构当⽹络管理协议在报⽂中使⽤MIB变量时,每个变量名后还要加⼀个后缀,以作为该变量的⼀个实例。
如ipInReceives的实例数字表⽰为:1.3.6.1.2.1.4.3.0.需要注意的是,MIB中的管理对象的OID有些需要动态确定,如IP路由表,为了指明地址202.120.86.71的下⼀站路由(next hop),我们可以引⽤这样的实例:.dod.internet.mgmt.mib.ip. ipRouteTable.ipRouteEntry.ipRouteNextHop.202.120.86.71, 相应的数字表⽰为:1.3.6.1.2.1.4.21.1.7.202.120.86.71对于这种动态对象标识的实例,由于⽆法转换为预先指定的Readkey名称,与飞邻的产品架构冲突(需要动态⽣成可变Readkey),暂不考虑⽀持。
SNMP报文格式分析
1、SNMP报文格式
1、1 snmp简介
1、1、1 snmp工作原理
SNMP采用特殊得客户机/服务器模式,即代理/管理站模型.对网络得管理与维护就是通过管理工作站与SNMP代理间得交互工作完成得。
每个SNMP从代理负责回答SNMP管理工作站(主代理)关于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 管理站用Get-Request消息从拥有SNMP代理得网络设备中检索信息,而SNMP代理则用Get—Response消息响应。
Get-Next- Request用于与Get—Request组合起来查询特定得表对象中得列元素.
2。
Set-Request
SNMP管理站用Set-Request可以对网络设备进行远程配置(包括设备名、设备属性、删除设备或使某一个设备属性有效/无效等)。
3.Trap
SNMP代理使用Trap向SNMP管理站发送非请求消息,一般用于描述某一事件得发生,如接口UP/DOWN,IP地址更改等.
上面五种消息中Get—Request、Get—Next—Request与Set—Reque st就是由管理站发送到代理侧得161端口得;后面两种Get-Response与Trap 就是由代理进程发给管理进程得,其中Trap消息被发送到管理进程得162端口,所有数据都就是走UDP封装。
1、1、3 snmp报文格式图
SNMP报文得形式大致如下图所示。
1、2 snmp报文编码格式
SNMP(简单网络管理协议)就是目前在计算机网络中用得最广泛得网络管理协议,它使用ASN、1(Abstract Syntax Notation One抽象语法表示法、1)来定义SNMP报文格式与MIB(Management Information Base管理信息库)变量得名称。
1、2、1 ASN、1
ASN、1就是一种描述数据与数据特征得正式语言,它与数据得存储及编码无关。
根据ASN、1标准定义,数据类型分为:ﻫ a、简单数据类型: boolean布尔值
null空
integer整型
real实数
octerstring八进制字符串
object identifier对象标识
ipaddressIP地址
time ticks时刻值等。
b、构造数据类型:
sequence序列
sequence ofset
set ofchoice等。
构造数据类型提供一种或多种简单数据类型进行复合得方法。
1、2、2基本编码规则BER
在具体系统中,我们需要用具体得编码规则将ASN、1语法表示得抽象数据转换成具体得比特流。
SNMP使用得编码方法就是BER(Basic Encoding Rule).BER得数据都由三个域构成:标识域(tag)+长度域(length) + 值域(value)。
长度域用于指示后续得值域value得字节数。
但就是这个长度域自身多长怎么确定呢?SNMP使用得就是变长表示法,这有点类似与UTF8得编码方式.具
体表示方法如下:
(1)如果值域得长度在0到127字节之间,那么就就是一个字节来表示,即第一个最高位为0得时候,其值就代表了值域得长度。
ﻫ (2)如果值域得长度在127字节以上,那么第一个字节得第一个bit 位(为1)就用于指示值域得长度在127字节以上,后7个bit 位(实际值)以及后续用于表示值域长度得字节数.
因为绝大部分情况下,值域得长度都在【0,127】区间内,所有这种表示方法最节约。
1、3 snmp 报文介绍 1、3、2 SN MP 版本表示
前三个字节就是SN MP版本得内容。
0x02,0x01,0x01、 0x02就是标识域,表示得就是值域类型为Integer 0x01就是长度域,表示后续值域得长度为1个字节 0x 01就是值域,表示版本为SNMP v 2c 。
1、3、3 munity共同体表示
共同体部分这里一共占了8个字节。
如:x04,0x06,0x70,0x75,0x62,0x6c,0x69,0x63
0x04就是标识域,表示值域类型为(OCTSTR)
0x06就是长度域,表示值域得长度为6个字节
70 75 62 6c 69 63就是值域得内容,就是群体名public得assic码值1、3、4 PUD表示
这个部分内容比较多,但都就是基于BER形式编码出来得。
内容举例如下:ﻫa2 23 02 04 22 70 8b d4 0201 00 02 01 00 3015 30 13 06 0e 2b 06 01 04 01 8ca6 5e 01 01 01 01 01 00 02 01 2b
1.PDU类型
2.PUD长度域
0xa2后一个字节就是这个PUD得长度域,0x23表示后面得值域就是35个字节。
3.get/set表示
SNMP应该说就是有三种操作,get/set/trap,又可细分为上面表格
当出现noSuchName、badValue或readOnly得差错时(见上表),由代理进程在回答时设置得一个整数,它指明有差错得变量在变量列表中得偏移。
举例:02 01 00
0x02就是标识域,表示值域为整型数据
0x01就是长度域,表示值域长度为1个字节
0x00就是值域,因为没有出错,所以这里为0
1、3、5 变量绑定
变量绑定就就是跟在错误索引后面得一系列变量。
这些变量同样也采取BER形式得编码规则.
在get或get—next报文中,变量得值应忽略。
1、3、6 trap(notification)
PUD得类型如果不就是上面得所述得get/set那就应该就是tra
1.OID:
第一个部分就是指trap报文对应得网络设备得对象标识符。
此对象标
识符肯定就是在enterprise结点{1、3、6、1、4、1}下面得一
棵子树上。
2.trap类型
3.当使用上述类型2、3、5时,在报文后面变量绑定部分得第一个变量应标识响应得接口.
4、特定代码(specific-code)
指明代理自定义得时间(若trap类型为6),否则为0。
时间戳(timestamp)
指明自代理进程初始化到产生trap报告得事件发生所经历得时间,例如时间戳为1230表明在代理初始化后1230ms发生了该时间.
6、变量绑定(variable—bindings)
指明一个或多个变量得名与对应得值。
也就是采用得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,长度域根据情况而定,值域得编码比较复杂,如下所示。
1.首两个ID被合并为一个字节X * 40+Y.
例如:1、3合并为1x40+3 = 43 = 0x2B
2.后续得ID,如果在区间[1,127]内,直接编码表示,如果大于127,那么按照下面(3)所述方法编码。
3.如果ID大于127,那么使用多个字节来表示。
a、这多个字节中除最后一个字节外,前面得字节最高位为1
b、这多个字节得最后一个字节得最高位为0
c、这里每个字节剩下得7个比特位用来表示实际得数值
例如201566这个数,用十六进制表示就是0x03 13 5e,那么用二进制表示就是000 1100 010 0110 101 1110。
注意上面就是以7个比特位为单位进行分划得,现在我们来填充最高位.
将前面得最高位填1,最后一个最高位填0即可得到
1000 11001010 0110 0101 1110
用十六进制表示为0x8c a6 5e
1、4、3 sequence组合类型
sequence表示其由多个数据组合而成,每一个数据也都还就是采用得BER编码方法.例如我们这里分析得数据包中就要一个sequence类型得数据,其值域又就是有一个OID类型得数据与一个Integer类型得数据组合而成得。
见2、1实例。
2、分析报文
2、1 get-next-request报文示例分析(a、hex)
先使用hexdump来查瞧一下获取到得报文内容。
(hexdump就是一个很
2、2 get—response报文示例分析(b、hex)。