我们就针对上图中所抓的这个包来进行分析。
1.“tcpdump: verbose output suppressed, use -v or -vv for full protocol decode”
这是说你命令没有用到-v和-vv,如果你用了这两个选项,输出就会有更多内容。
2.“listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes”
是说监听网卡eth0,类型是以太网EN10MB,抓包大小限制65535字节。包的大小可通过-s选项修改,尽量不要太大,如果你要追求高性能,建议把这个值调低,这样可以有效避免在大流量情况下的丢包现象。
3.“19:48:33.285838 IP 116.255.245.206.47940 > 8.8.8.8.53: 22768+ A? www.baidu.com. (31)”
“19:48:33.285838”,分别对应着这个包被抓到的“时”、“分”、“秒”、“微妙”。
“IP”,表示这个包在网络层是IP包。
“116.255.245.206.47940”,表示这个包的源IP为116.255.245.206,源端口为47940。
“>”,这个大于号表示数据包的传输方向。
“8.8.8.8.53“,表示这个包要发向的目的端IP是8.8.8.8,目标端口为53,也就是我们熟知的DNS服务端口。
“22768+ A? www.baidu.com. (31)“,这是DNS协议的内容,即请求www.baidu.com的A纪录。
4.0x0000: 4500 003b c341 0000 4011 3c93 74ff f5ce E..;.A..@.<.t...
0x0010: 0808 0808 bb44 0035 0027 b457 58f0 0100 .....D.5.'.WX...
0x0020: 0001 0000 0000 0000 0377 7777 0562 6169 .........www.bai
0x0030: 6475 0363 6f6d 0000 0100 01 du.com.....
接下来便是IP包的内容了,是除去了以太网之后剩下的内容,其中左侧红色字体部分是十六进制内容,右侧天蓝色字体部分是相应的ASCII码内容。
下面转自:http://roclinux.cn/?p=2511
在最后的“终结招”中,我们会给大家介绍一些之前没有提到的“小秘籍”,让大家在追查网络问题、进行协议分析时,可以用得上。
[秘籍一]
使用-A选项,则tcpdump只会显示ASCII形式的数据包内容,不会再以十六进制形式显示;
[秘籍二]
使用-XX选项,则tcpdump会从以太网部分就开始显示网络包内容,而不是仅从网络层协议开始显示。
[秘籍三]
使用如下命令,则tcpdump会列出所有可以选择的抓包对象。
# tcpdump -D 1.eth0 2.any (Pseudo-device that captures on all interfaces) 3.lo
[秘籍四]
如果想查看哪些ICMP包中“目标不可达、主机不可达”的包,请使用这样的过滤表达式:
icmp[0:2]==0x0301
[秘籍五]
要提取TCP协议的SYN、ACK、FIN标识字段,语法是:
tcp[tcpflags] & tcp-syn tcp[tcpflags] & tcp-ack tcp[tcpflags] & tcp-fin
[秘籍六]
要提取TCP协议里的SYN-ACK数据包,不但可以使用上面的方法,也可以直接使用最本质的方法:
tcp[13]==18
[秘籍七]
如果要抓取一个区间内的端口,可以使用portrange语法:
tcpdump -i eth0 -nn 'portrange 52-55' -c 1 -XX