不显示ACK包

不显示ACK包

我有以下内容tcpdump -i eth0 -n tcp port 5000来过滤两台主机之间流动的每个数据包。然而,其中一台主机总是发送 ACK。

我如何隐藏这个ACK?

答案1

tcpdump -i eth0 -n 'tcp port 5000 and (tcp[tcpflags] & tcp-ack == 0)'应该做你想做的事。确实如此按位和TCP 标志和仅 ACK 位掩码之间的值,因此如果没有 ACK,结果应等于 0。

答案2

您可以通过将命令传递给 grep 来隐藏它:

tcpdump -i eth0 -n tcp port 5000 | grep -e ACK -v

-e option is to select a pattern (ACK in your case)
-v (to invert the grep function : grep all except the defined pattern) 

答案3

我直接从 man tcpdump 过滤器示例中复制了此内容:

打印所有进出端口 80 的 IPv4 HTTP 数据包,即仅打印包含数据的数据包,而不是例如 SYN 和 FIN 数据包以及仅 ACK 数据包。 (IPv6 留给读者作为练习。)

tcpdump 'tcp 端口 80 和 (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

相关内容