TCPDump 可以将网络中传送的数据包完全截获下来提供分析,支持针对网络层、协议、主机、网络或端口的过滤。
- -a 尝试将网络和广播地址转换成名称。
- -c<数据包数目> tcpdump将在接受到count个数据包后退出。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
00:02:01.018648 IP ubuntu.33417 > _gateway.domain: 3978+ [1au] A? sp1.baidu.com. (42)
00:02:01.019195 IP ubuntu.38973 > _gateway.domain: 28848+ [1au] AAAA? sp1.baidu.com. (42)
00:02:01.019313 IP ubuntu.36415 > _gateway.domain: 22020+ [1au] PTR? 2.113.168.192.in-addr.arpa. (55)
00:02:01.021463 IP _gateway.domain > ubuntu.36415: 22020 NXDomain 0/0/1 (55)
00:02:01.021621 IP ubuntu.36415 > _gateway.domain: 22020+ PTR? 2.113.168.192.in-addr.arpa. (44)
00:02:01.022083 IP _gateway.domain > ubuntu.33417: 3978 3/0/1 CNAME www.a.shifen.com., A 36.152.44.96, A 36.152.44.95 (101)
00:02:01.022657 IP ubuntu.60280 > 36.152.44.96.https: Flags [S], seq 4236676010, win 64240, options [mss 1460,sackOK,TS val 2233702947 ecr 0,nop,wscale 7], length 0
00:02:01.022949 IP _gateway.domain > ubuntu.36415: 22020 NXDomain 0/0/0 (44)
00:02:01.023494 IP ubuntu.41742 > _gateway.domain: 44210+ [1au] PTR? 128.113.168.192.in-addr.arpa. (57)
00:02:01.025131 IP _gateway.domain > ubuntu.41742: 44210 NXDomain 0/0/1 (57)
10 packets captured
19 packets received by filter
0 packets dropped by kernel
- -d 以容易阅读的形式,在标准输出上打印出编排过的包匹配码, 随后tcpdump停止。
- -dd 以C语言的形式打印出包匹配码.
- -ddd 以十进制数的形式打印出包匹配码(会在包匹配码之前有一个附加的'count'前缀).
- -e 每行的打印输出中将包括数据包的数据链路层头部信息
- -f 用数字显示网际网络地址。
- -F<表达文件> 显示外部的 IPV4 地址时,采用数字方式而不是名字。
- -i<网络界面> 指定 tcpdump 需要监听的接口。
对标准输出进行行缓冲(nt: 使标准输出设备遇到一个换行符就马上把这行的内容打印出来).在需要同时观察抓包打印以及保存抓包记录的时候很有用. 比如, 可通过以下命令组合来达到此目的:``tcpdump -l | tee dat'' 或者 ``tcpdump -l > dat & tail -f dat''.(nt: 前者使用tee来把tcpdump 的输出同时放到文件dat和标准输出中, 而后者通过重定向操作'>', 把tcpdump的输出放到dat 文件中, 同时通过tail把dat文件中的内容放到标准输出中)
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不启用进行包匹配时所用的优化代码,当怀疑某些 bug 是由优化代码引起的,此选项将很有用。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅打印少数的传输协议信息。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
00:13:59.942508 ARP, Request who-has _gateway tell 192.168.113.1, length 46
00:13:59.943247 IP ubuntu.49403 > _gateway.domain: UDP, length 55
00:13:59.944293 IP _gateway.domain > ubuntu.49403: UDP, length 55
00:13:59.944415 IP ubuntu.49403 > _gateway.domain: UDP, length 44
00:13:59.945881 IP _gateway.domain > ubuntu.49403: UDP, length 44
00:13:59.946588 IP ubuntu.44380 > _gateway.domain: UDP, length 55
00:13:59.947655 IP _gateway.domain > ubuntu.44380: UDP, length 55
00:13:59.947728 IP ubuntu.44380 > _gateway.domain: UDP, length 44
00:13:59.949170 IP _gateway.domain > ubuntu.44380: UDP, length 44
00:13:59.949813 IP ubuntu.53039 > _gateway.domain: UDP, length 57
10 packets captured
13 packets received by filter
0 packets dropped by kernel
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小,如果不设置默认将会是 68 字节。
-S 打印 TCP 数据包的顺序号时,使用绝对的顺序号,而不是相对的顺序号。
(注: 相对顺序号可理解为, 相对第一个TCP 包顺序号的差距,比如, 接受方收到第一个数据包的绝对顺序号为232323, 对于后来接收到的第2个,第3个数据包, tcpdump会打印其序列号为1, 2分别表示与第一个数据包的差距为1 和 2. 而如果此时-S 选项被设置, 对于后来接收到的第2个, 第3个数据包会打印出其绝对顺序号:232324, 232325).
-t 在每行输出中不打印时间戳。
-tt 不对每行输出的时间进行格式处理。
-ttt tcpdump 输出时,每两行打印之间会延迟一个段时间
-tttt 在每行打印的时间戳之前添加日期的打印
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。
公众号:没有梦想的阿巧 后台回复 "群聊",一起学习,一起进步
有疑问加站长微信联系(非本文作者)