我需要分析网络上的流量转储,以检查是否所有PC都启用了tcp keep-live功能.
我正在为此目的使用tcpdump.
我正在为此目的使用tcpdump.
我需要知道的是,是否有可能只对保持活动数据包进行过滤.
在Windows上我看到wireshark可以做到这一点,但在我的linux系统上,它只有控制台模式,我不知道如何过滤那种数据包.
解决方法
keepalive探针是一个没有数据的数据包,ACK标志打开
tcpdump -pni $intf -v "tcp port $port and ( tcp[tcpflags] & tcp-ack != 0 and ( (ip[2:2] - ((ip[0]&0xf)<<2) ) - ((tcp[12]&0xf0)>>2) ) == 0 ) "
这是做什么的:
>按位,在tcp标志字段和tcp-ack之间,以确保它是一个ACK
> IP数据包长度(以字节为单位) – IP标头长度 – TCP标头长度,以确保它没有数据
免责声明:没有经过实际测试,但应该指出你的方向