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的紧急指针