如何让 tcpdump 包含数据包大小的第 3 层和第 4 层?

How to get tcpdump to include layer 3 and 4 for packet size?

我使用下面的命令来获取数据包的到达间隔时间和数据包的长度:

tcpdump -r example.pcap -n -ttt > result.txt

结果是这样的:

00:00:00.000545 IP src-ip.52871 > dst-ip.39461: Flags [P.], seq 1:69, ack 1, win 16698, length 68

tcpdump 计算的长度仅限于数据包的应用层,我希望它计算数据包的第 3 层(IP)、第 4 层(TCP 或 UDP)和第 5 层(应用)的数据包大小。

我应该使用什么命令?

使用 -v 选项,它将显示更多详细信息。在下面的示例中,length 64 是整个帧的长度,包括第 3 层和第 4 层 header。

18:15:21.158633 IP (tos 0x20, ttl 45, id 60118, offset 0, flags [DF], proto TCP (6), length 64)
    c-66-30-195-209.hsd1.ma.comcast.net.55297 > 10.6.117.127.macromedia-fcs: Flags [S], cksum 0x5a12 (correct), seq 4051274653, win 65535, options [mss 1460,nop,wscale 3,nop,nop,TS val 925877152 ecr 0,sackOK,eol], length 0

你也可以用-e包含以太网header,然后长度会包含就好了。