下記のようなコマンドを打って見ていたら通信のタイミングと tcpdump の出力のタイミングが合わなかった。が、表示された時刻は合っていた。
-lしない時
# (tcpdump -nn -i eth0 port 53 | grep qiita) &
# date; dig +short qiita.com.; while :; do echo -n . ; sleep 1; done
Thu Jul 17 23:06:15 JST 2014
54.238.54.221
......................................23:06:15.253345 IP 192.168.37.250.53967 > 192.168.37.10.53: 13341+ A? qiita.com. (27)
.....^C
これはバッファリングだろうと TCPDUMP(8) を見ると以下のように書かれている。
TCPDUMP(8)
-l Make stdout line buffered. Useful if you want to see the data while capturing it. E.g.,
''tcpdump -l | tee dat'' or ''tcpdump -l > dat & tail -f dat''.
line buffer してくれるのようになる。という訳で -l をつけたら行単位でさっさと渡してくれるようになったようだ。
-lした時
# (tcpdump -nn -l -i eth0 port 53 | grep qiita) &
# date; dig +short qiita.com.; while :; do echo -n . ; sleep 1; done
Thu Jul 17 23:11:54 JST 2014
23:11:54.571012 IP 192.168.37.250.50944 > 192.168.37.10.53: 34052+ A? qiita.com. (27)
54.248.227.194
.....^C