c - pcap过滤器表达式

you*_*his 4 c network-programming tcp filter pcap

我想知道这个表达式中的输入数据是如何实际工作的.

char *filter = "dst host 172.17.14.90 and ip";
Run Code Online (Sandbox Code Playgroud)

根据我的理解,该dest host位和以下IPv4地址定义了接收到的数据包应该寻址的地址.

在这一点上,手册页有点令人困惑:

dst host host
如果数据包的IPv4/v6目标字段是主机,则为True,可以是地址或名称.

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

这是什么意思?至于那and ip一点我没有任何线索.

Mic*_*rny 5

你是对的第一点是对的:

dst host 172.17.14.90
Run Code Online (Sandbox Code Playgroud)

意味着应该将数据包发往172.17.14.90.

第二个:

ip
Run Code Online (Sandbox Code Playgroud)

像manpage说的是缩写:

ether proto ip
Run Code Online (Sandbox Code Playgroud)

这意味着必须使用IP协议发送数据包.

因此,总结一下:必须使用IP协议将数据包发送到具有IP地址的主机172.17.14.90.


作为一个说明,使用以下内容可以更简单地表达上述内容:

ip dst host 172.17.14.90
Run Code Online (Sandbox Code Playgroud)

(host在联机帮助页中的解释附近解释了较短的语法)