Linux. Могут ли пакеты пройти через libpcap? - PullRequest
0 голосов
/ 03 марта 2020

Я пишу linux программу, которая контролирует inte rnet traffi c. Другими словами, сколько байтов я использовал в течение некоторого времени. Я использую Pcap4J для java (реализация libpcap), и у меня есть вопрос по этому поводу. Что произойдет, если моя программа не обработала пакет, пока пришла новая.
1. Это замедляет скорость загрузки (выгрузки) для всей ОС?
2. Она пропускает новую, и моя программа никогда не узнает, что она прошла?

Другими словами, я загрузил 1G данных на свой компьютер. Сколько байт получит моя программа: 100%, или она может быть передана моей программе, но все еще получила место назначения!
И дайте мне знать, если это плохая идея написать приложение control traffi c с использованием этой библиотеки!

1 Ответ

1 голос
/ 03 апреля 2020

Ваше приложение теряет пакеты. По вашим словам, они проходят мимо.

Однако, если ваша идея состоит в том, чтобы иметь метрику c того, сколько пакетов поступило и вышло из вашей системы в данный момент времени, определенно есть лучшие способы достижения it.

На 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

Вы можете настроить время или параметр, я думаю, вы получите идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...