V2多了管理站之间通信
data由any到pdus
V2的PDU多了两种
变成了6+1种格式
trap也变成了通用格式
InformRequest是管理站之间的通信
因为前五个中间两个字段都取0
response 00表示成功
七个PDU的顺序,其中report没有定义,不用记忆
顺序几下,【】是有顺序的
4在V1是trap,V2被废弃了
response在V2只有这一种,所以请求都是一个名称
response
先学response
Trap不需要响应
如果错误状态不等于0,就不对变量绑定表处理
管理站收到会直接丢弃变量绑定表
GetReqeust
V2不是原子性的
V1版的nosuchname太笼统了
V2版本nosuchobject对象不存在
nosuchInstance实例不存在
非12就genErr
toobig重发response,变量绑定表为0
GetNextRequest
按词典找
V2没有下一行的数据,就返回endOfMibView
GetBulkRequest
取出多个变量绑定表的数值
getnext喝response 11对应
getbulk返回变量绑定会多于请求的
设N=1 M=2
一个2行3列表
前1个就取一个后继
剩下有L-N=2列
都取M=2个变量
总数就是
N+R*M=5
将列对象改写成t.e.1.n这类格式
填上列的OID
使用getnext要进行四次操作
这个getbulk分为了两个步骤
若想一次性取完把第一个的2,3写成2,4就行
2就是分界线,把ab两个标量和后面对象分开
变量绑定表种取了第一行
让后就是后继为3,各取三个
一共就是2+3*3
第二次getbulk03
0表示一个整体
3表示后继3个
变量绑定个数为3
所以取9个
由于后面只有第四行
取了第四行
所以会报endOFmibview(如果是V1就回去表外面的数值)
这个例子要注意
索引有两列
先写前面那个标量值
后写
oid名.索引1.索引2=数值
setRequest
V2把验证分为两个步骤
完成第一步后可能还会有两个错误
第二步中如果赋值一个错误,剩下都要撤回
或不能撤销所有赋值。也是一个错误
如果是get或者inform就会报前三个错误和身份验证错误
如果是set就可能会有各种各样的
上述的错误都会填在错误状态中
之前的nosuchobject nosuchinstance都放在了变量绑定表中
之前也提到了如果错误状态置0管理站才会检查变量绑定表,否则丢弃
所以这几个错误发生时错误状态为0,那种错误会在变量绑定表种回复null[n],n表示是那种错误
在V2中类型时3+6种
null特指错误,sequence在外
v1版本是6种trap,用INTEGER来指明类型
V2版本使用OID类型
有456三组
132被废弃
第一个节点只能通过trap获得
不能用getset
名值对,值在snmptraps组里
V2版本定义的是OID不是INTEGER
所以定义是一个宏定义
其他写在了注释里,并没有被废弃
如果是之前说的管理对象(标量,行,列,表)五大要素都有要满足
trap宏和objecttype不同
要写出完整的OID类型
把V1的厂商字段换成了snmptrapEnterprise
变量绑定表最后一个变量绑定变成了这个厂商的信息
注意如果是一般trap那就是国际标准返回的是snmptraps是子节点
只有特殊trap才会在变量绑定表最后一个反应厂商信息
由于snmp是应用层报文
所以代理地址这个信息可以在网络层获取
V2就没有这个字段了
剩下的更新上述都细节描述了
看这个例子,变量绑定表种1.3.6.1.3.1.1.4/.5都是一般类型trap
5.2是热启动
由于是一般trap
所以值一定是1.3.6.1.3.1.1.5
informRequest
管理站之间通信
是一种可靠的通告方式
10是context 1是构造类型 剩下的是编号
考试中,如果是A4就是V1trap,A就是V2trap