tcpdump是多么具有侵入性?

时间:2016-08-11 08:59:18

标签: linux networking tcpdump

我环顾四周寻找tcpdump内幕的文档,但我还没有找到任何内容。所以我的问题是计算机上的tcpdump是多么具有侵扰性。如何评估专用于分析流量的资源(内存或CPU)数量?

2 个答案:

答案 0 :(得分:2)

据我所知,tcpdump根据你的要求消耗它的变量。

要查看tcpdump进程消耗的资源数量,只需观看top Top Manual等系统监视器。

  如果你的网络流量,tcpdump输出可能相当大   表达式定义的是高带宽;特别是如果你是   捕获超过默认的68字节数据包内容。

     

捕获数据包,例如,与大文件传输或   数百或数千个客户正在积极使用Web服务器   将产生压倒性的输出量。如果写这个输出   stdout你可能无法输入你的命令   终端,如果写入文件,您可能会耗尽主机的磁盘空间。   在任何一种情况下,tcpdump也可能消耗大量的CPU   和内存资源。

     

避免这些问题;

     
      
  • 在指定表达式时要非常小心,并尽量使它们尽可能具体。
  •   
  • 在交通繁忙/负荷过程中不要捕捉。
  •   
  • 如果您希望捕获整个数据包内容,请先进行测试捕获,然后再捕获默认的68Bytes并对其进行判断   是否系统将处理完整的数据包内容捕获。
  •   
  • 在写入磁盘的情况下,请仔细监视文件的大小,并确保相关主机具有可能的磁盘资源   必需可用,或使用-c参数来限制数量   捕获的数据包。
  •   
  • 永远不要使用能够捕获远程telnet / SSH /任何终端/ shell流量的表达式。 tcpdump输出   会为您的终端产生流量,从而进一步产生   输出,导致终端流量增加等等   无限且可能有害的反馈循环。
  •   

原产地:Tcpdump - Basics

答案 1 :(得分:1)

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

socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))

并将所有内容写入磁盘。

内核会捕获并管理特殊缓冲区以存储tcpdump的数据包。如果缓冲区是满包,它就会掉线。缓冲区使用-B选项进行调节。大多数系统都有缓冲上限,~2GB或类似的东西。

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