2016-03-03 1 views
0

Мой вопрос касается команды tcpdump. Команда «tcpdump -i eth1 -d» перечисляет инструкции сборки, связанные с фильтром. Мне любопытно видеть, что никакая команда не обращается к M [15] (память слот 15).Когда используется пространство памяти 15, используемое в BPF (пакет фильтра Беркли) или tcpdump?

Может кто-нибудь сообщить мне, есть ли какие-либо фильтры, для которых используется этот слот памяти? Что это зарезервировано для использования и как оно используется?

ответ

2

Слоты памяти не предназначены для определенных целей; они распределяются динамически по pcap_compile() по мере необходимости.

Для большинства фильтров для большинства типов сетей оптимизатор pcap_compile() удалит все используемые слоты памяти или, по крайней мере, уменьшит их, чтобы код не нуждался в 16 слотах памяти.

Для 802.11 (собственный 802.11, который вы видите в режиме монитора, а не «поддельный Ethernet», который вы получаете, когда он не находится в режиме монитора), оптимизатор в настоящее время не используется (он разработан с учетом допущений, которые не применяются к более сложное принятие решений, требуемое для работы с 802.11, и исправление его - большой проект), поэтому вы увидите больше возможностей использования памяти. Тем не менее, вам, вероятно, понадобится очень сложный фильтр, чтобы использовать M [15] - или M [14] или M [13] или большую часть памяти младшего адреса.

(Вы также можете запустить tcpdump с опцией -O, чтобы отключить оптимизатор.)

Смежные вопросы