如何使用tcpdump显示所有数据?

如何使用tcpdump显示所有数据?

我正在使用捕获网络流量tcpdump。问题是,当包太长时,我看不到所有捕获数据。例如,当tcp帧长度超过500时,我只看到100-200或更少。如何显示所有帧数据(500+)?我尝试过添加-vv-vvv参数。这是我的命令:

tcpdump -i eth1 tcp and host 10.27.13.14 and port 6973 -vv -X -c 1000

答案1

您可以使用-ssnaplen 标志来指定每个数据包的大小。

-s 0根据手册页,将默认数据包大小设置为 65535 字节,这会增加处理数据包所需的时间并减少数据包缓冲量。虽然这在这里可能有效,但在其他情况下可能不合适,因为它可能导致数据包丢失。

更好的做法是将snaplen标志设置为捕获所需内容所需的最小值。另一个答案建议使用 1500 字节来查看整个数据包,如果您只对标头感兴趣,则建议使用 160 字节。

因此,虽然-s 0在这里可能有效,但为了将来的使用,最好先开始-s 1500并根据需要进行调整。

man tcpdump

请注意,拍摄较大的快照不仅会增加处理数据包所需的时间,而且会有效地减少数据包缓冲量。这可能会导致数据包丢失。您应该将 snaplen 限制为能够捕获您感兴趣的协议信息的最小数字。将 snaplen 设置为 0 将其设置为默认值 65535,以便向后兼容最新旧版本的 tcpdump。

相关内容