http://www.yesky.com/201/60701.shtml
找了些介绍命令的文章 楼主的问题 古怪~

解决方案 »

  1.   

    http://cisco.chinaitlab.com/configure/748.html
    用到就写好了,呵呵
      

  2.   

    有些接触,但对协议的理解还细不到这个层面,简单Google了一下,初步理解如下:所谓的get和set长度,应该指的是通过这两个指令发送/接收的pdu的长度限制,而PDU的格式是通过SMI定义的,
    SMI使用ASN.1语法定义了几种数据类型,那么,不同的数据类型,有自己的长度限制:
    Integer: 有符号32位整数 
    Integer32:与Integer相同。 
    UInteger32:无符号32位整数 
    Octet String:任意二进制或文本数据, 
    Object Identifier:An OID. 
    Bit String:表示取名的位的枚举。这是一个无符号的数据类型。 
    IpAddress:IP地址。 
    Counter32:表示一个非负的整数,递增到最大值,然后恢复并从0开始递增。 
    Counter64:与Counter32相同,最大值为64位的最大值-1。 
    Gauge32:表示无符号整数,可增加或减少,但是不超过最大值。 
    TimeTicks:表示代表数据的一个无符号整数,2^32取模(4294967296),两个值之间为百分之一秒。 
    Opaque:提供向下兼容,不再使用的数据类型 
    NsapAddress:表示一个用变长八进制字符窗表示的OSI地址。 
    其中,Octet String的随意性较大,在SMI v1中,没有限定其长度,但SMI v2中则限定最大65535字节。实际上,能够发送多大的数据,还跟你的程序是否有限制有关。
    证据:http://www.cppblog.com/lambdacpp/archive/2007/07/28/28893.html
    http://www.adventnet.com/products/net-snmp/help/developing_management_applications/datatypes/smi_datatypes/octetstring_datatype.html
      

  3.   

    我用SNMP4J作了下实验。它本身对长度没有限制。
    如果Agent端返回的查询结果加上各层的包头大于65535字节。服务器端接收不到返回,也抓不到包。
    单就GET命令发送应该不存在长度限制,但GETBULK命令应该会有,命令总长不能大于65535。
      

  4.   

    to Z_Beginner
    谢谢最后的总结!
      

  5.   

    Snmp协议中集中典型的错误就有一个:TooBig(1),当应答PDU太大超出了本地限制的时候代理端就设置此错误返回给管理端.
    Snmp代理端可以限制产生应答PDU大小的最大值,这个值不能够小于484 Bytes。也就是说可以限制最大值,但不能够限制的太小了。一般是,在产生的传输的数据包中,以不引起IP包分片为好。当应答消息超过代理端设置的最大值时候,就产生TooBig错误了。
    所以讲,get/set错误长度是否有限制,是取决于代理端的设置的,而不是没有限制。再追究一点:
    1)snmp的pdu在传输的时候是采用BER等方式编码的,比如,一个Integer类型数据,采用BER方式编码后,就大致如下:
    72的BER编码(十六进制表示):02 01 48
    02是表示类型Integer,01表示长度,48才表示值72.
    也就是说,在使用get/set命令的时候,如果想计算长度,是不能够简单把变量的长度加起来的,要看编码的长度。2)关于IP包分片问题,取决于网络上每一段网段的MTU值。如以太网的MTU是1500等。
      

  6.   

    在org.snmp4j Interface Target里面有两个这样的函数:
    int getMaxSizeRequestPDU()
    Gets the maxmim size of request PDUs that this target is able to respond to. The default is 65535. 
    void setMaxSizeRequestPDU(int maxSizeRequestPDU)
    Sets the maximum size of request PDUs that this target is able to receive. 你看是不是可以达到要求?