我想使用带有过滤器的 tcpdump 进行一些长时间运行的调试。具体来说,我只想捕获具有以下条件的数据包:
- 新 TCP 连接的前 10 个左右的数据包(包括握手)
- 任何奇怪的东西(重传、重复 ACK 等)
- 任何指示断开连接(FIN、RST、其他)
我坚持的部分是前 X 个数据包。是否可以为 tcpdump(或类似工具)编写 PCAP 过滤器来执行此操作?如果是这样,怎么做?
我想使用带有过滤器的 tcpdump 进行一些长时间运行的调试。具体来说,我只想捕获具有以下条件的数据包:
我坚持的部分是前 X 个数据包。是否可以为 tcpdump(或类似工具)编写 PCAP 过滤器来执行此操作?如果是这样,怎么做?
不。Pcap 过滤器是“无状态的”,这意味着它们独立于先前的数据包对每个数据包起作用,并且没有在数据包之间保持可用的“状态”(或内存);看到的数据包数量将是一种状态,您可以在 pcap 过滤器中检查这种类型的内容。
重传和重复的 ACK 也需要状态来识别,即您必须记住第一次传输以检查重传并记住第一个 ACK 以检查重复的 ACK。