1

在我们的应用程序中,分配缓冲区以接收 snmp 陷阱,即:

unsigned char buffer[65536 - 60 - 8];

但这些数字告诉我 IP 数据包的头、尾和总长度。

你能解释一下,为什么我们需要这个大小的缓冲区来进行 snmp 陷阱?

4

1 回答 1

3

SNMP 允许 PDU 的大小达到网络的 MTU。缓冲区应该与预期的最大数据包一样大,因此如果可能,它应该可能对应于 MTU。例如,以太网允许高达 1500 字节的帧有效载荷。

编辑:好的,这是来自 RFC 3416 的正式定义:

The maximum size of an SNMP message is limited to the minimum of:

(1)   the maximum message size which the destination SNMP entity can
     accept; and,

(2)   the maximum message size which the source SNMP entity can
     generate.

我解释这与网络的MTU有关,但是当然,如​​果数据包在分片后重新组合正确,则接收更大的陷阱是没有问题的。

也许,如果你问“为什么我的代码中是数字 65536”,你应该问写它的人?

于 2014-05-21T14:52:25.563 回答