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一点我没有任何线索.
你是对的第一点是对的:
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在联机帮助页中的解释附近解释了较短的语法)