网络管理与维护(4.2)SNMPV1协议数据单元

在这里插入图片描述

get读
set写,很少执行
trap是代理主动告知管理站信息的方式
在这里插入图片描述
set没有next
在这里插入图片描述
trap是单向的
在这里插入图片描述
V1版本不能增删表行内容
也不能要求被管对象进行操作
且不能完整访问一个表。只能逐个访问
在这里插入图片描述
应用层协议,SNMP PDU区域类似于传统PDU数据部分
五种操作五种PDU
不同设备之间通过ASN.1语法进行通讯
在这里插入图片描述
版本号-1,
0是v1
1是v2
团体名之前的
在这里插入图片描述

any就是pdus
左边元素右边类型名(大写)
在这里插入图片描述
在这里插入图片描述
五种PDU分为两类
在这里插入图片描述
在这里插入图片描述
request-id:INTEGER
双方区分不同时段发送的请求或收到的响应
有一个一一对应的关系在这里插入图片描述
同时防止了重复报文
在这里插入图片描述
错误状态error-status
表示的是六种状态
在这里插入图片描述
在这里插入图片描述
注意是INTEGER类型
不是枚举只编码数字部分
在这里插入图片描述
要写出错误位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
变量绑定就是名值对。用SEQUECE OF,类型一样用SEQUENCE OF

在这里插入图片描述
注意变量绑定VarBind和VarBindList的区别
在这里插入图片描述
总的PDU格式,
在这里插入图片描述
PDU编码距离来说明
在这里插入图片描述
【】是上下文就是10(复习一下,之前说了context 类型可以省略前面的名称直接数字)
PDU实质是SEQUENCE就是构造类型1
GetRequest值是0就是A0
其他就是值123类比得到的
记住顺序先读后写,请求请求响应请求
注意顺序!!

在这里插入图片描述
注意一定是对象实例的标识符
value是值
因为对象的标识符的话就没有值了

标识就是一个随机数
请求阶段其他两个位置置0
变量绑定表发出方也置null
value1…n是对象的值
在这里插入图片描述
getnext就可以写对象或实例标识符
value是值
因为对象的标识符的话就没有值了
在这里插入图片描述
set操作变量绑定表都是一样的,因为管理站要告诉代理改了啥。代理要告诉管理站改了些啥。
在这里插入图片描述
GetResponse 这个第一个错误,报错第二个nusuchname,第一个错了,只有一个。错在是对象的标识符而不是对象实例的标识符
在这里插入图片描述
抓包抓到的一个get-request可以逐段分析
在这里插入图片描述
重点来分析这一段十六进制 看灰色之后的
首先回忆一下四类型的tag
00universal
01application
10context
11private

SMNP最开始TLV,T是SEQUENCE类型所以是30(universal 16编码
00 1 10000) L往后数是38个,换算为十六进制是26,V有三个
版本,团体名,内容
版本的TLV,T 02 表示是INTEGER(universal 2)类型,L表示一个字段,00表示版本号是V1
下来时团体名TLV,T 04标识他是OCTET STRING 04(universal 4) L 06说明有六节长度的value,一直到a1结束。
在这里插入图片描述
然后我们看PDUs
TLV
T a1

在这里插入图片描述
因为是隐式所以不编码老标签SEQUENCE
而是上下文CONTEXT
编码就是10 1 00001
10是context,1表示他是sequence 00001是他是【1】GetNextRequest

L19,
在这里插入图片描述
V一共有四个类型
在这里插入图片描述
02 02 00 99 INTEGER 2个字符 00 和99 表示request-id
02 01 00 INTEGER 一个字符 00之前学的,请求报文的错误状态是00
02 01 00 INTEGER 一个字符 00之前学的,请求报文的错误索引是00
后面一串就是变量绑定表
在这里插入图片描述
第一个30是变量绑定表SEQUENCE, 0d是L
后面的30是变量绑定的SEQUENCE 0b是L

在这里插入图片描述
剩下的就是名值对
由于只有一个30所以该变量绑定表中只有一个变量绑定
06是OBJECT IDENTIFIER 07是L
剩下的OID 2b 06 01 02 01 01 01
1.3.6.2.1.1.1
至于2b之前题到的是混合编码1.3
05 00 是值 ,前面的是名
05是null的tag
00是L
V是空的
在这里插入图片描述
总结一下,就是SNMP
先分为三分版本,团体名,PUD
PDU分为四部分,名,错误类型,错误索引,变量绑定表
然后还有变量绑定表中的变量绑定
在这里插入图片描述
在这里插入图片描述
因为get要写到对象OID上,所以在标量对象后面加.0

在这里插入图片描述
正常操作get
在这里插入图片描述
注意这个331长格式OID编码
在这里插入图片描述
311写二进制,去后7位加0.上8位第一位置1

TOO BIG
在这里插入图片描述
在这里插入图片描述
响应值位null ,错误位置1

对象标识错误
在这里插入图片描述
oid在getrequest中只给到对象,没有到实例,respones中没有获取到值。所以错误状态报2.索引置1
正常的getnextreqeust
在这里插入图片描述
在这里插入图片描述
请求要1.3.6.1.2.1.1.2的next,response报文就返回一个1.3和所对应的值
正常的set操作
在这里插入图片描述
不允许写操作
在这里插入图片描述

没写权限。就汇报错误状态4

设置值不匹配
在这里插入图片描述
sysName是OCTET STRING
这里传了个OID

TRAP

在这里插入图片描述
trap有六个字段
在这里插入图片描述
在这里插入图片描述
冷启动严重,热启动正常在这里插入图片描述
配置路由的时候有在这里插入图片描述
团体名错误,EGP没邻居
在这里插入图片描述
前六种是一般trap,数值6就需要考虑特殊trap。
在这里插入图片描述
在这里插入图片描述
【4】就是trapPDU
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
记英文
在这里插入图片描述
trap用的是162端口
注意非trap管理站发送的端口是一个any端口,动态分配的不是162
在这里插入图片描述
先构成PDU在构成报文

猜你喜欢

转载自blog.csdn.net/qq_43430273/article/details/105918749