网络协议分析(7):SNMP

简单网络管理协议

SNMP(Simple Network Management Protocol) 设计在TCP/IP协议簇上的,为网络节点提供了一个通用的管理方法。SNMP 使网络管理员能够管理网络效能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收随机消息(及事件报告)网络管理系统获知网络出现问题。

一套完整的SNMP系统主要包括管理信息库(MIB)、管理信息结构(SMI)及SNMP报文协议。



前言

SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。


提示:以下是本篇文章正文内容,下面案例可供参考

一、SNMP协议分析

SNMP的协议数据单元被封装在UDP报文内,即采用面向无连接的数据包封装。SNMP的报文格式由四个部分组成,版本、首部、安全参数和SNMP报文的数据部分。

SNMP版本现在是v3,SNMP的首部分为三部分:报文标识(message identification)、最大报文长度报文标志(message flag)。SNMP数据部分有两个字段用来加密报文,加密方法是通过安全参数来产生报文摘要。

SNMP的PDU部分由PDU类型、请求ID、差错控制、差错索引以及变量绑定几个字段组成。

  • 请求ID(request id):由管理进程设置的一个4字节整数。代理返回响应时,也要返回该ID,用以管理进程区分响应报文。
  • 差错状态(errorstatus):请求报文时,置0,响应报文时填入0~18中的一个数字,类似于Linux编程的errono。具体错误编号的取值,自己查文档。
  • 差错索引(errorindex):请求报文中,置0,响应报文时,如果出现错误,那么代理设置一个整数,该值表示差错的变量在变量列表中的偏移。
  • 变量绑定(variable-binding):一个或多个变量的名和对应的值,请求报文中,变量的值忽略(置NULL)。

本想在对网络协议进行复盘学习时用代码进行模拟,奈何太过麻烦…只好给大家推荐大神的代码了

python使用SNMP-网络管理协议

真心强烈推荐大家看看,有需要的可以跟着一起敲代码测试,但如果只是想了解一下,不需要跟着敲代码…由于python2,python3以及第三方包都有snmp相关的包,而且存在重名,在配置导入模块包时会比较麻烦,而且在window上调试snmp协议会出现奇奇怪怪的问题(虽然不至于解决不了,但是巨麻烦,不适合初学者)

二、致歉

博主本想保证一日一更,但是前段时间家里有事,又赶上快毕业了…所以从16号到27号一直没能更新,我在此向友友们致歉


总结

由于水平有限,在进行几次创作之后…我发现自己的分享质量无法保障,今天这一节也有些许的仓促了,所以决定以后尽量两天一更,一天用于分析网络协议和梳理代码实现思路,一天用于肝代码…
尽力提升创作质量,与友友们一起进步成长

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值