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在构成报文