tcpdump使用总结(转贴珍藏)

本文介绍tcpdump工具的基本用法及高级技巧,包括过滤条件设置、数据包捕获、解析TCP连接建立与释放过程等。

tcpdump是Linux下自带的网络分析工具。可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

tcpdump主要选项

类型

host, net, port

方向

src, dst, src or dst, src and dst

协议

ip, tcp, udp, arp, rarp, ether, fddi

逻辑

and, or, not 或者 &&, ||, !

选项

-i指定网卡, -n显示ip, -A文本显示

-c抓包数, -x/-xx/-X/-XX二进制显示, -r读, -w写

类型

host指定主机或目的地址。

net制定网络地址。net可以用来指定子网。

port指定监听端口。

如果要制定多种类型,用逻辑运算符号连接。

tcpdump net 192.168.1。监听子网192.168.1.0

tcpdump net 192.168.1.0/24

tcpdump host 192.168.1.124 and port 80。监听指定主机的80端口。

方向

src指定源地址,dst指定目的地址。

监听来自192.168.1.10 或 192.168.1.11的80端口:

tcpdump port 80 and /(src 192.168.1.10 or src 192.168.1.11/)

协议

用来捕获特定协议的数据包有:ether(ethernet), tcp, udp, icmp, ip, ip6(ipv6), arp, rarp(reverse arp)等。

逻辑

tcpdump port 80 and /(host 192.168.1.10 or host 192.168.1.11/)。监听主机192.168.1.10 或 192.168.1.11的80端口。

使用()一定要用/转义。

获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包:

tcpdump ip host 210.27.48.1 and ! 210.27.48.2

选项

-i:指定网卡。

-n:显示ip,而不是主机名。

-c:指定抓多少个包后退出。

-A:以ASCII方式显示包内容,这个选项对文本格式的协议包非常有用。

-s:指定抓包显示一行的宽度,-s0表示显示完整的包,经常和-A一起用。

-x/-xx/-X/-XX:以十六进制显示包内容,几个选项只有细微的差别,详见man手册。

-vv:详细信息。

-r:从文件中读取。

-w:导出到指定文件。

监听来自172.25.38.145到端口7012的数据,并到处到指定文件:

tcpdump tcp dst port 7012 and src host 172.25.38.145 -vv –w output.dat

从指定文件加载监听数据:

tcpdump -r output.dat

监听网卡eth1端口7012的数据:

tcpdump tcp port 7012 -ieth1 –n

tcpdump解析tcp连接建立和释放

下面命令抓包:

# tcpdump tcp port 7012 and host 172.25.34.88 -ieth1 -n

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes

1. 14:44:52.174122 IP 172.25.38.145.49563 > 172.25.34.88.7012: S 1986599379:1986599379(0) win 5840

2. 14:44:52.174249 IP 172.25.34.88.7012 > 172.25.38.145.49563: S 4294961892:4294961892(0) ack 1986599380 win 5792

3. 14:44:52.174228 IP 172.25.38.145.49563 > 172.25.34.88.7012: . ack 1 win 1460

4. 14:44:52.174433 IP 172.25.38.145.49563 > 172.25.34.88.7012: P 1:109(108) ack 1 win 1460

5. 14:44:52.174443 IP 172.25.34.88.7012 > 172.25.38.145.49563: . ack 109 win 1448

6. 14:44:52.186891 IP 172.25.34.88.7012 > 172.25.38.145.49563: P 1:857(856) ack 109 win 1448

7. 14:44:52.186914 IP 172.25.34.88.7012 > 172.25.38.145.49563: F 857:857(0) ack 109 win 1448

8. 14:44:52.187054 IP 172.25.38.145.49563 > 172.25.34.88.7012: . ack 857 win 1888

9. 14:44:52.195347 IP 172.25.38.145.49563 > 172.25.34.88.7012: F 109:109(0) ack 858 win 1888

10. 14:44:52.195355 IP 172.25.34.88.7012 > 172.25.38.145.49563: . ack 110 win 1448

每一行中间都有这个包所携带的标志:

S=SYN,发起连接标志。

P=PUSH,传送数据标志。

F=FIN,关闭连接标志。

ack 表示确认包。

RST=RESET,异常关闭连接。

. 表示没有任何标志。

上面抓包的过程解析:

第1行:14:44:52这个时间,从172.25.38.145(client)的临时端口49563向172.25.34.88(server)的7012监听端口发起连接,client初始包序号为1986599379,滑动窗口大小为5840字节(滑动窗口即tcp接收缓冲区的大小,用于tcp拥塞控制),mss大小为1460(即可接收的最大包长度,通常为MTU减40字节,IP头和TCP头各20字节)。

第2行:server响应连接,同时带上第一个包的ack信息,为client端的初始包序号加1,即1986599380,即server端下次等待接受这个包序号的包,用于tcp字节流的顺序控制。Server端的初始包序号为4294961892,mss也是1460。

第3行:client再次确认,tcp连接三次握手完成。

第4行:client发请求包,包长度108字节。

第5行:server响应ack。

第6行:server回包,包长度856字节。

第7行:client响应ack。

第8行:client发起关闭连接请求。

第9行:server响应ack,并且也发送FIN标志关闭。

第10行:客户端响应ack,关闭连接的四次握手完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值