【问题标题】:Linux. Can packets pass libpcap by?Linux。数据包可以通过libpcap吗?
【发布时间】:2020-03-03 14:10:26
【问题描述】:

我正在编写一个控制互联网流量的 linux 程序。换句话说,我在一段时间内使用了多少字节。我使用 Pcap4J for java(libpcap 的实现),我对此有疑问。如果我的程序在一个新的包到达时没有处理一个包,会发生什么情况。
1. 降低整个操作系统的下载(上传)速度?
2.它跳过一个新的,我的程序永远不会知道它通过了?

也就是说,我已经在我的电脑上下载了 1G 的数据。我的程序获得了多少字节:100% 或者它可能通过了我的程序但仍然到达了目的地!
并告诉我使用此库编写控制交通应用程序是否是个坏主意!

【问题讨论】:

  • 具有垃圾收集功能的语言(咳嗽,Java)最终会调用垃圾收集器,当垃圾收集器将您的工作推到一边时,您的程序将丢失数据包。

标签: linux libpcap network-traffic


【解决方案1】:

您的应用程序丢失数据包。用你的话来说,他们过去了。

但是,如果您的想法是衡量在给定时间内进出系统的数据包数量,那么肯定有更好的方法来实现它。

在 Linux 上,您只需编写一个执行以下操作的脚本:

DEVICE=eth0
RX0=$(cat /sys/net/$DEVICE/statistics/rx_bytes)
TX0=$(cat /sys/net/$DEVICE/statistics/tx_bytes)
while : ; do
  sleep 5
  RX1=$(cat /sys/net/$DEVICE/statistics/rx_bytes)
  TX1=$(cat /sys/net/$DEVICE/statistics/tx_bytes)
  echo "RX bytes: $(($RX1-$RX0))"
  echo "TX bytes: $(($TX1-$TX0))"
  RX0=RX1
  TX0=TX1
done

你可以调整时间或者是否是一个参数,我想你会明白的。

【讨论】:

    猜你喜欢
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    • 2013-05-23
    • 2022-06-15
    相关资源
    最近更新 更多