![如何使用tcpdump显示所有数据?](https://linux22.com/image/90329/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8tcpdump%E6%98%BE%E7%A4%BA%E6%89%80%E6%9C%89%E6%95%B0%E6%8D%AE%EF%BC%9F.png)
我正在使用捕获网络流量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
您可以使用-s
snaplen 标志来指定每个数据包的大小。
-s 0
根据手册页,将默认数据包大小设置为 65535 字节,这会增加处理数据包所需的时间并减少数据包缓冲量。虽然这在这里可能有效,但在其他情况下可能不合适,因为它可能导致数据包丢失。
更好的做法是将snaplen
标志设置为捕获所需内容所需的最小值。另一个答案建议使用 1500 字节来查看整个数据包,如果您只对标头感兴趣,则建议使用 160 字节。
因此,虽然-s 0
在这里可能有效,但为了将来的使用,最好先开始-s 1500
并根据需要进行调整。
从man tcpdump
:
请注意,拍摄较大的快照不仅会增加处理数据包所需的时间,而且会有效地减少数据包缓冲量。这可能会导致数据包丢失。您应该将 snaplen 限制为能够捕获您感兴趣的协议信息的最小数字。将 snaplen 设置为 0 将其设置为默认值 65535,以便向后兼容最新旧版本的 tcpdump。