c - выражение фильтра pcap

Мне было интересно, как на самом деле работают входные данные в этом выражении.

char *filter = "dst host 172.17.14.90 and ip";

Насколько я понимаю, бит dest host и следующий адрес IPv4 определяют, на какой адрес должен быть адресован полученный пакет.

Страница руководства была немного запутанной в этом отношении, говоря:

dst host host
Истинно, если в поле адресата IPv4/v6 пакета указан хост, который может быть либо адресом, либо именем.

http://www.manpagez.com/man/7/pcap-filter/

так это что значит? а что касается бита and ip, я понятия не имею.


person youjustreadthis    schedule 26.07.2012    source источник


Ответы (1)


Вы правы насчет первого бита:

dst host 172.17.14.90

означает, что пакет должен быть адресован 172.17.14.90.

Второй:

ip

как говорится в справочной странице, это аббревиатура:

ether proto ip

это означает, что пакет должен быть отправлен с использованием протокола IP.

Итак, резюмируем: пакет необходимо отправить по IP-протоколу на хост с IP-адресом 172.17.14.90.


В качестве примечания вышеизложенное можно было бы выразить проще, используя:

ip dst host 172.17.14.90

(более короткий синтаксис объясняется рядом с объяснением host на странице руководства)

person Michał Górny    schedule 26.07.2012
comment
Спасибо! очень хорошо объяснил :) - person youjustreadthis; 26.07.2012