在我们的应用程序中,缓冲区被分配用于接收snmp陷阱,即:
unsigned char buffer[65536 - 60 - 8];
但这些数字告诉我有关IP包头,页脚和总长度的信息。
请你解释一下,为什么我们需要这个大小的缓冲区用于snmp陷阱?
答案 0 :(得分: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",你应该问写它的人吗?