tcpdump 详解(干货)

经常使用命令

1. tcpdump -i eth0 ; 监听网卡
2. tcpdump host 210.27.48.1 ; 收到或发出的数据包
3. tcpdump -i eth0 src host www.baidu.com
4. tcpdup -i eth0 dst host www.baidu.com
5. tcpdump -i eth0 net 192.149
6. tcpdump -i eho0 ether src 9a:e3:a3:d3:d3:d2 抓取MAC地址的包
-c 1000 指定抓1000个包
-w /file/test.cap 保存起来,用wireshark分析
-e 在输出行打印出数据链路层的头部信息。
-s 限制包的大小长度,默认96个节点,-s 0 不作限制
-n 不作将IP和端口解析成主机名与服务名,好比3306表明mysql
-vv 输出详细的报文信息。

报文解析

通常是用-X
好比如下命令
tcpdump -i lo0 port 3306 -s 0 -X -c 4   下面是在MAC下的输出结果:
09:06:15.104493 IP localhost.mysql > localhost.63988: Flags [.], ack 2240182754, win 12759, length 0
	0x0000:  4500 0028 5ded 0000 4006 0000 7f00 0001  E..(]...@.......
	0x0010:  7f00 0001 0cea f9f4 521e 0ca5 8586 79e2  ........R.....y.
	0x0020:  5010 31d7 fe1c 0000                      P.1.....
09:06:15.104557 IP localhost.63988 > localhost.mysql: Flags [.], ack 1, win 12756, options [nop,nop,TS val 848191995 ecr 848090015], length 0
	0x0000:  4500 0034 0000 4000 4006 0000 7f00 0001  E..4..@.@.......
	0x0010:  7f00 0001 f9f4 0cea 8586 79e2 521e 0ca6  ..........y.R...
	0x0020:  8010 31d4 fe28 0000 0101 080a 328e 61fb  ..1..(......2.a.
	0x0030:  328c d39f                                2...
09:06:16.106248 IP localhost.mysql > localhost.63988: Flags [.], ack 1, win 12759, length 0
	0x0000:  4500 0028 daa4 0000 4006 0000 7f00 0001  E..(....@.......
	0x0010:  7f00 0001 0cea f9f4 521e 0ca5 8586 79e2  ........R.....y.
	0x0020:  5010 31d7 fe1c 0000                      P.1.....
09:06:16.106305 IP localhost.63988 > localhost.mysql: Flags [.], ack 1, win 12756, options [nop,nop,TS val 848192996 ecr 848090015], length 0
	0x0000:  4500 0034 0000 4000 4006 0000 7f00 0001  E..4..@.@.......
	0x0010:  7f00 0001 f9f4 0cea 8586 79e2 521e 0ca6  ..........y.R...
	0x0020:  8010 31d4 fe28 0000 0101 080a 328e 65e4  ..1..(......2.e.
	0x0030:  328c d39f

时间戳104493 分析:mysql

4500 0028  这个是IP报文头的第1-4字节,4 表明IP4,5表明首部长是20字节,IP的首度长每加1表明加一行,一行等于4个字节,00表明8位服务类型,28表明总长度,这里是40,减掉首度长度20,那么IP的内容只有20字节正好等于TCP的首度长度。说明TCP不包含数据
5ded 0000 5ded表明16位标识,惟一值,0000 表明3位标与13偏移,这里不偏移。
4006 0000 40表明8位TTL,这里是64,06表明协议,6表示TCP,17表UDP 1 ICMP 2IGMP,0000表明首部校验和。
7f00 0001 表明IP源址,这里是127.0.0.1
7f00 0001 表明目的IP地址,这里是127.0.0.1
0cea f9f4 0cea 表明TCP的源端口,这里是3306,f9f4 表明目的端口,这里是63988
521e 0ca5 这个表明TCP的32位序号
8586 79e2 这个表明TCP的确认序号
5010 31d7  5表明TCP首部长度,10的二进制是 00010000,后面6位分别是URG,ACK,PSH,RST,SYN,FIN 这里只有ACK标志,31d7表明16窗口大小,这里是12759。
fe1c 0000 fe1c表明16检验和,0000表明TCP的紧急指针
相关文章
相关标签/搜索