浅谈SNMP简单网络管理协议报文格式详解--理论篇

2 篇文章 0 订阅
1 篇文章 0 订阅

最近在公司科室内部分享了关于snmp协议的培训,收益匪浅,我觉得有必要记录一下,本文章主要讲述报文格式以及一些结构,不对源码进行分析。


引言:随着网络技术的飞速发展,网络的数量也越来越多。而网络中的设备来自各个不同的厂家,如何管理这些设备就显得十分的重要。


基于TCP/IP的网络管理包含两个部分:网络管理站(也叫管理进程)和被管理的网络单元(也叫代理进程)。管理进程和代理进程的两种通信方式:1、管理进程向代理进程发出请求,询问或者修改一个具体的参数值;2、代理进程主动向管理进程报告某件重要事情的发生。


基于TCP/IP网络管理的三个组成部分:

1、一个管理信息库MIB,包含所有代理进程的所有可被查询和修改的参数;

2、关于MIB的一套共用的结构和表示符号,即管理信息结构SMI;

3、管理进程和代理进程之间的通信协议,叫做简单网络管理协议SNMP,SNMP在传输层用的是UDP协议。


通信协议报文:关于管理进程和代理进程的交互信息,SNMP定义了5种协议报文:

1、get-request:管理进程请求从代理进程处获取一个或者多个参数的值

2、get-next-request:管理进程从代理进程处获取一个或者多个参数的下一个参数的值

3、set-request:管理进程设置代理进程处的一个或者多个参数的值

4、get-request:返回一个或者多个参数的值,有代理进程发出,是前三个报文的响应

5、trap:代理进程主动发出的报文,通知管理进程某件事件的发生


图1:SNMP的5种操作

                    

图1:由于收发采用了不一样的端口号,所以一个系统可以同时为管理进程和代理进程


下图是关于5种报文的格式:

图2:报文格式



因协议报文的编码采用了ASN.1和BER,使得报文的长度取决于变量的类型和值,也就是说,报文的码流都是以TLV形式编码的,T:type,L:length,V:value。这三个是顺序存在的。

对于trap报文,会在下面介绍。


管理信息结构(关于MIB的一套共用的结构和表示符号SMI,相当于c语言中的数据结构),这里罗列一下:

图3:管理信息数据类型


对象标识符:管理信息库里的所有参数的表示方式,都是以对象标识符的方式存在的;对象标志是一种数据类型,也就是上图中的OBJECT  IDENTIFIER,它是一种“授权”的命名对象。“授权”的意思就是这些标识符不是随便分配的,它是有一些权威机构进行管理和分配的。

对象标志是一个整数序列,以点(“.”)分隔,这些整数构成一个树形结构,类似于DNS或者Unix的文件系统。对象标志从树的顶部开始,顶部没有标识,以root表示(这和Unix中文件系统的树的遍历方向非常相似)。


图4:MIB结构


由上图可知:所有的mib变量都是从1.3.6.1.2.1这个标识符开始的,树上的每个节点同时有一个对应的文字名,这主要是为了阅读方便,在实际的管理进程和代理进程进行数据交互时,MIB变量名都是以标识符来标志的,当然都是以1.3.6.1.2.1开头的。在管理进程代理进程通信的时候,也就是查询和修改图中system,interfaces,at,ip,icmp,tcp,udp节点下的众多参数;对于图中1.3.6.1.4.1,这是协议留给厂家自定义而预留的,比如厂家型号,名称和一些自定义参数变量都在这个节点下。


trap报文:trap报文是代理进程主动发往管理进程的,以告诉管理进程在代理进程侧有某件需要关心的时间发生。需要注意的是,trap报文是代理进程发送到管理进程处的,但是管理进程并不需要给代理进程回复确认。


图5:trap报文格式




企业:代表企业名称的字段,因厂家不同,所以这个标志会在1.3.6.1.4.1厂家自定义节点下;

代理地址:即代理进程所在系统的地址

trap类型:有7种定义,当值为6时,这表示由厂家自定义的类型

特定代码:特定代码仅仅在trap类型为6时有效,否则都置为0,他是厂家自定义的事件代码

时间戳:TimeTicks类型,所谓的时间戳就是代理进程初始化到trap报文所经历的多少个百分之一秒


完结。本文难免有些细节部分和理解的出入,欢迎提出一起探讨。

另:本文内容参考了《计算机科学丛书·TCP/IP详解卷1:协议》[美] W.Richard Stevens 著;范建华胥光辉张涛 等 译;谢希仁 校,机械工业出版社

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值