tcpdump 显示高延迟数据包

tcpdump 显示高延迟数据包

我使用 tcpdump 捕获从本地 rsyslog 服务到 syslog 服务器的数据包,但是,当我在 tcpdump 中尝试不同的命令(带/不带 dst 选项)时,显示的结果有延迟。

预期/期望的行为:

tcpdump -n -e -i any -A | grep hello               # without dst option
tcpdump -n -e -i any dst 10.8.8.3 -A | grep hello  # with dst option

上述两个命令应同时或以非常短的延迟显示数据包。

实际行为: 带 dst 选项的命令tcpdump -n -e -i any dst 10.8.8.3 -A | grep hello显示的数据包延迟长达 20 秒,这让我误认为数据包没有发送成功。

command1立即捕获数据包

在此输入图像描述

command2 无法立即捕获数据包。大约20秒后,数据包终于显示在屏幕上。

附加信息:

  • Debian 4.9.189-3+deb9u2 (2019-11-11) x86_64 GNU/Linux
  • tcpdump 版本 4.9.3
  • libpcap 版本 1.8.1

答案1

tcpdump(8)(选择比OP版本稍旧的版本,但任何较新的版本都可以):

-l

使标准输出行缓冲。如果您想在捕获数据时查看数据,这很有用。例如,

tcpdump -l | tee dat

或者

tcpdump -l > dat & tail -f dat

[...]

-U与其行为类似-l,但它会导致输出“数据包缓冲”,[...]

因此,只要您需要“实时”显示,就-l添加即可。tcpdump

相关内容