SNMP协议详解<二>

2023-05-16

上一篇文章讲解了SNMP的基本架构,本篇文章将重点分析SNMP报文,并对不同版本(SNMPv1、v2c、v3)进行区别!

四、SNMP协议数据单元

在SNMP管理中,管理站(NMS)和代理(Agent)之间交换的管理信息构成了SNMP报文,报文的基本格式如下图1:

                                                              图 1

SNMP主要有SNMPv1SNMPV2cSNMPv3几种最常用的版本。

1、SNMPv1

SNMPv1是SNMP协议的最初版本,提供最小限度的网络管理功能。SNMPv1的SMI和MIB都比较简单,且存在较多安全缺陷。

SNMPv1采用团体名认证。团体名的作用类似于密码,用来限制NMS对Agent的访问。如果SNMP报文携带的团体名没有得到NMS/Agent的认可,该报文将被丢弃。

报文格式如下图2:

                                                                 图 2

从上图可以看出,SNMP消息主要由Version、Community、SNMP PDU几部分构成。其中,报文中的主要字段定义如下:

Version:SNMP版本

Community:团体名,用于Agent与NMS之间的认证。团体名有可读和可写两种,如果是执行Get、GetNext操作,则采用可读团体名进行认证;如果是执行Set操作,则采用可写团体名进行认证。

Request ID:用于匹配请求和响应,SNMP给每个请求分配全局唯一的ID。

Error status:用于表示在处理请求时出现的状况,包括noError、tooBig、noSuchName、badValue、readOnly、genErr。

Error index:差错索引。当出现异常情况时,提供变量绑定列表(Variable bindings)中导致异常的变量的信息。

Variable bindings:变量绑定列表,由变量名和变量值对组成。

enterprise:Trap源(生成Trap信息的设备)的类型。

Agent addr:Trap源的地址。

Generic trap:通用Trap类型,包括coldStart、warmStart、linkDown、linkUp、authenticationFailure、egpNeighborLoss、enterpriseSpecific。

Specific trap:企业私有Trap信息。

Time stamp:上次重新初始化网络实体和产生Trap之间所持续的时间,即sysUpTime对象的取值。

用Wireshark抓取的SNMPv1版本的报文格式如下图3:

                                                                                                      图 3

192.168.2.1是Agent的ip地址,192.168.2.110是NMS的ip地址

从上图可以看到,SNMPv1版本的安全性不太好,可以抓取到community也即是团体名;tarp操作只有发送报文没有响应报文


2、SNMPv2c

SNMPv2c也采用团体名认证。在兼容SNMPv1的同时又扩充了SNMPv1的功能:它提供了更多的操作类型(GetBulk和inform操作);支持更多的数据类型(Counter32等);提供了更丰富的错误代码,能够更细致地区分错误。

在v1版本中只有数据类型的错误码,而v2c版本中增加了不少,如下图4:

                                             图 4

SNMPv2报文格式如下图5:

                                                               图 5

比较SNMPv1而言,SNMPv2c新增了GetBulk操作报文和inform操作报文。GetBulk操作所对应的基本操作类型是GetNext操作,通过对Non repeaters和Max repetitions参数的设定,高效率地从Agent获取大量管理对象数据。而inform操作也就是相当于Trap的升级操作,但是二者又有什么不同之处呢?Trap报文发出去之后不会收到响应报文,而inform报文在发出报文之后能收到响应报文。

抓取的报文格式如下:

(1)GetBulk操作,批量获取数据,如下图6:

                                                                                               图 6

(2)inform操作,可以看到它与trap操作的区别,有个响应报文,如下图7:

                                                                                              图 7


SNMPv2c修改了Trap报文格式。SNMPv2c Trap PUD采用SNMPv1 Get/GetNext/Set PDU的格式,并将sysUpTime和snmpTrapOID作为Variable bindings中的变量来构造报文(可参照上图3的get-next的response和下图9SNMPv2的trap进行对比),报文格式如下:

(1)SNMPv1版本的tarp报文格式如下图8:

                                                                                           图 8

(2)SNMPv2的trap报文格式如下图9:

                                                                                           图 9

3、SNMPv3

SNMPv3主要在安全性方面进行了增强,它采用了USM和VACM技术。USM提供了认证和加密功能,VACM确定用户是否允许访问特定的MIB对象以及访问方式。

USM(基于用户的安全模型)

USM引入了用户名和组的概念,可以设置认证和加密功能。认证用于验证报文发送方的合法性,避免非法用户的访问;加密则是对NMS和Agent之间传输的报文进行加密,以免被窃听。通过有无认证和有无加密等功能组合,可以为NMS和Agent之间的通信提供更高的安全性。

VACM(基于视图的访问控制模型)

VACM技术定义了组、安全等级、上下文、MIB视图、访问策略五个元素,这些元素同时决定用户是否具有访问的权限,只有具有了访问权限的用户才能管理操作对象。在同一个SNMP实体上可以定义不同的组,组与MIB视图绑定,组内又可以定义多个用户。当使用某个用户名进行访问的时候,只能访问对应的MIB视图定义的对象。

由于v3版本的增加了不少内容,所以决定在下一篇文章中再详细的讲解SNMPv3。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SNMP协议详解<二> 的相关文章

随机推荐

  • Windows系统调用架构分析—也谈KiFastCallEntry函数地址的获取 .

    为什么要写这篇文章 1 因为最近在学习 软件调试 这本书 xff0c 看到书中的某个调试历程中讲了Windows 的系统调用的实现机制 xff0c 其中讲到了从Ring3 跳转到Ring0 之后直接进入了KiFastCallEntry 这个
  • ubuntu rc.local不能正常运行

    查了下rc local有时不能正常运行的原因 xff1a Ubuntu默认将 bin sh链接到 bin dash xff0c 而 etc rc local脚本中用的正是 bin sh xff0c 导致出错 将默认的shell改成bash的
  • 关于建设symbol store的建议

    xfeff xfeff 一 symbol store的需求分析 xff1a 1 我们现在的调试环境严重依赖开发人员自己使用的开发环境 xff0c 缺点在于其他人要进行调试要么搭建一个同样的环境 xff0c 严重地占去大家不必要花费的工作时间
  • 进程防结束之PS_CROSS_THREAD_FLAGS_SYSTEM

    有人投到黑防去了 xff0c 不过黑防不厚道 xff0c 竟然没给完整的代码 xff0c 自己整理一份备用吧 xff0c 驱网 DebugMan 邪八的那群人直接飘过吧 这种方法的关键在于给线程的ETHREAD CrossThreadFla
  • CNN实现入侵检测(kdd99)

    文章目录 1 实验说明2 实验过程2 1 数据预处理2 1 1 导入数据2 1 2 one hot编码2 1 3 归一化2 1 4 标签编码 2 2 数据加载2 3 搭建模型2 4 模型训练 3 实验结果4 完整代码 1 实验说明 CNN模
  • All about VDIs

    This tutorial is an experiment to see if forum users find it useful to have a single collected reference for some common
  • PUTTY无法远程连接服务器故障解决

    对于一个刚刚了解putty工具的新手来说 xff0c 在putty工具使用中有时出现了问题而无法解决 今天就来介绍怎么解决putty无法远程连接服务器的故障 用putty远程连接服务器时 提示错误 server unexpectedlycl
  • 驱动中获取进程名的正确方法

    这是个古老的话题 xff0c 没有技术含量 xff0c 只不过看到网上很多驱动代码在获取进程名时总喜欢去读偏移 EPROCESS ImageFileName xff0c 感觉比较误导新人 这个方法其实很不科学 xff0c 硬编码偏移带来的兼
  • C语言写二进制数据到mysql的Blob字段

    引子 由于调试需要 xff0c 需直接往数据库里写入二进制数据 本来这些数据是由上层软件来写的 xff0c 用的是 C 为了熟悉 C 语言的数据库操作 xff0c 还是决定用 C 来写这段调试代码 概况 xff1a 表名 xff1a Tas
  • 编译器 链接 选项解释:link incrementally的作用

    What is ILT xff08 Incremental Link Table 这两天研究了一下DLL的import export原理 xff0c 看了一些资料 xff0c 无意中发现网上有一篇文章存在错误 xff0c 而这篇文章流传还甚
  • 关于涉密信息系统分级保护的几个问题

    2003年9月7日 xff0c 中共中央办公厅 国务院办公厅转发了 国家信息化领导小组关于加强国家信息安全保障工作的意见 xff0c 其中明确提出了开展信息安全等级保护的任务 xff0c 并指出涉及国家秘密的信息系统 xff08 以下简称涉
  • Launch your application in Vista under the local system account without the UAC popup

    This article describes how to launch an application from session 0 to session 1 under the local system account using a s
  • UTF8ToAnsi 和 AnsiToUTF8

    std string UTF8ToAnsi const std string amp strIn std string amp strOut WCHAR strSrc 61 NULL TCHAR szRes 61 NULL int i 61
  • TCP/IP 配置参数

    TCP IP 配置参数 Windows 2000 TCP IP 协议组件实现从注册表中获取全部配置数据 配置信息 是由安装程序写到注册表中的 一些信息也可以由动态主机配置协议 DHCP 客户 服务提供 xff08 如启用 xff09 本附录
  • ExpLookupHandleTableEntry

    wrk1 2中 ExpLookupHandleTableEntry的内部流程 1 取 Handle EXHANDLE类型 值为tHandle 并将TagBit 低两位 置0 2 取 HandleTable gt NextHandleNeed
  • C++完美转发

    1 std forawrd std forward lt T gt arg 可以实现完美转发 xff0c 即如果 arg 是一个右值引用 xff0c 则转发之后结果仍是右值引用 xff1b 反之 xff0c 如果 arg 是一个左值引用 x
  • win7 usb u盘打不开,设备管理器提示:该设备无法启动。 (代码 10)

    解决 xff1a 禁用改设备 gt 卸载 gt 重新插入u盘
  • linux netlink机制介绍与实例

    开发和维护内核是一件很繁杂的工作 xff0c 因此 xff0c 只有那些最重要或者与系统性能息息相关的代码才将其安排在内核中 其它程序 xff0c 比如GUI xff0c 管理以及控制部分的代码 xff0c 一般都会作为用户态程序 在 li
  • error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项的原因及解决方案

    值 0 不匹配值 2 xff0c Debug使用了Release下的库文件 值 2 不匹配值 0 xff0c Release使用了Debug下的库文件 对于上述两种情况 xff0c 只需要在预处理定义中设定其值使其符合要调用的程序即可 VS
  • SNMP协议详解<二>

    上一篇文章讲解了SNMP的基本架构 xff0c 本篇文章将重点分析SNMP报文 xff0c 并对不同版本 xff08 SNMPv1 v2c v3 xff09 进行区别 xff01 四 SNMP协议数据单元 在SNMP管理中 xff0c 管理