linux - tcpdump 的侵入性如何?

标签 linux networking tcpdump

我四处寻找有关 tcpdump 内部结构的文档,但我什么也没找到。所以我的问题是 tcpdump 在计算机上的侵入性有多大。如何评估专用于流量分析的资源量(内存或 CPU)?

最佳答案

tcpdump 是一个非常简单的工具,基本上是打开特殊类型的套接字

socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))

并将它得到的所有内容写入磁盘。

内核负责所有的捕获和管理特殊缓冲区来存储用于 tcpdump 的数据包。如果缓冲区是完整的数据包,它就会被丢弃。缓冲区由 -B 选项调节。大多数系统都有缓冲区上限,~2GB 或类似的东西。

从 CPU 的角度来看,您需要计算能力将所有数据复制 2 或 3 次,这通常不是问题,如果您无法捕获 1GB 链接,您很可能应该归咎于磁盘速度,而不是 CPU。对于 10Gb 链路,可能是 CPU 问题和内存总线带宽问题,您可能需要为此进行一些优化。

关于linux - tcpdump 的侵入性如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38891769/

相关文章:

Linux变量不维护

linux - 房地产linux备份解决方案

linux - Ganglia 无法在元节点和受监控节点之间进行通信

linux - 如何在专用的 apache2 服务器中创建子域

haskell - 如何在 Haskell 的多播连接中指定源地址?

json - 使用Tshark查看JSON数据

Java:比 String(byte[]) 更快的替代品

C# 性能计数器和 nic 名称

python - 如何使用 tcpdump 或从头开始编写一个模仿 Fiddler 的程序?

pcap - 过滤特定时间范围的 pcap 转储文件