我希望tcpdump
按数据包长度来缩小范围。我知道我可以`| grep,但我想知道是否可以在“ tcpdump”中将此特定的数据包长度作为选项传递。我试图编写一个脚本,使用以下命令向我展示网络上所有当前的MPEG-TS多播:
sudo tcpdump -c 1000 -ti <network_interface> multicast | grep 1316 | sort | uniq
因此,该命令可以正常工作,并为我提供所需的输出,但是我想通过传递tcpdump
命令中的长度来简化它,例如:
sudo tcpdump -c 1000 -ti <network_interface> multicast and length 1316 | sort | uniq
以太网数据包总大小
根据pcap-filter(7),您可以使用以下条件:
less length
, 相当于 len <= length
greater length
, 相当于 len >= length
根据示例,您还应该可以使用,但是没有记录。len == length
请注意,这包括链路层和网络层标头(即,捕获的所有内容),因此空的TCP ACK的IP“总长度”字段为60,但将被视为总共74个字节。
另请参阅以下StackOverflow线程:https ://stackoverflow.com/questions/9874093/how-to-filter-tcpdump-output-based-on-packet-length
IP数据包总大小
根据tcpdump(1),您可以访问IPv4标头的“总长度”字段:
ip[2:2] > 576
ip[2:2] <= 1000
UDP数据包或有效负载总大小
UDP没有长度字段,但其头的大小始终是8,你可以通常假定IPv4报头的大小将始终是20(IPv4的选项是非常罕见的,虽然他们在IGMP习惯)。
因此,如果您尝试过滤1316字节UDP数据报,
你得到过滤器ip[2:2] == 1344
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句