gpt4 book ai didi

c - 用于 PCAP 实时捕获的最佳 SNAPLEN

转载 作者:太空狗 更新时间:2023-10-29 17:11:23 26 4
gpt4 key购买 nike

使用 pcap_open_live 时从界面中嗅探,我见过很多使用各种数字的例子,如 SNAPLEN值,范围从 BUFSIZ ( <stdio.h> ) 到“魔数(Magic Number)”。

将我们从中捕获的接口(interface)的 MTU 设置为 SNAPLEN 不是更有意义吗?以这种方式,我们可以一次在 PCAP 缓冲区中容纳更多数据包。假设 MRU 等于 MTU 是否安全?

否则,是否有一种非奇特的方法来设置 SNAPLEN 值?

谢谢

最佳答案

MTU 是可以传递给链路层的最大有效载荷;它不包含任何链路层 header ,因此,例如,在以太网上它将是 1500,而不是 1514 或 1518,并且不会大到足以捕获全尺寸以太网数据包。

此外,它不包含任何元数据 header ,例如 802.11 radio 信息的 radiotap header 。

如果适配器正在进行任何形式的分段/分段/重组卸载,则传递给适配器或从适配器接收的数据包可能尚未分段或分段,或者可能已经重新组装,因此可能比 MTU 大很多

至于在 PCAP 缓冲区中容纳更多数据包,这仅适用于 Linux 中的内存映射 TPACKET_V1 和 TPACKET_V2 捕获机制,它们具有固定大小的数据包插槽;其他捕获机制不会为每个数据包保留最大大小的插槽,因此较短的快照长度无关紧要。对于 TPACKET_V1 和 TPACKET_V2,较小的快照长度可能会有所不同,尽管至少对于以太网,libpcap 1.2.1 会尽其所能尝试为以太网选择合适的缓冲区插槽大小。 (TPACKET_V3 似乎没有固定大小的每个数据包插槽,在这种情况下它不会有这个问题,但它最近才出现在正式发布的内核中,并且 libpcap 中还不支持它。)

关于c - 用于 PCAP 实时捕获的最佳 SNAPLEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9351664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com