作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我四处寻找有关 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/
这是 Google 无法回答的问题。我正在为一款多人游戏使用 XMLHttpRequest 进行一些 HTTP“长轮询”。在 Chrome 中,这会导致选项卡始终处于“加载中”状态:(1) 标签中的图
我是一名优秀的程序员,十分优秀!