Tcpdump与Wireshark抓包分析
做开发的小伙伴,都知道fiddler、httpwatch、Charles(Mac)的抓包工具,但是有的时候或者场景中我们需要整个链路网络问题,例如客户反馈线上业务系统慢,又例如某些网页中使用了activeX使用了TCP协议接口调用,这时候我们为了能够准确地、全链路地抓包和分析就可以用到Tcpdump与Wireshark。
Tcpdump一般Linux和Unix都内置了,Wireshark是开源软件,没有的可以自己百度搜索安装。
Tcpdump用来抓取数据,Wireshark(GUI工具)则是用于分析抓取到的数据比较方便。
1.Tcpdump
语法##
tcpdump [ -AdDefIKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
[ -C file_size ] [ -G rotate_seconds ] [ -F file ]
[ -i interface ] [ -m module ] [ -M secret ]
[ -r file ] [ -s snaplen ] [ -T type ] [ -w file ]
[ -W filecount ]
[ -E spi@ipaddr algo:secret,... ]
[ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
[ expression ]
-A:以ASCII编码打印每个报文(不包括链路层的头),这对分析网页来说很方便;
-a:将网络地址和广播地址转变成名字;
-c<数据包数目>:在收到指定的包的数目后,tcpdump就会停止;
-C:用于判断用 -w 选项将报文写入的文件的大小是否超过这个值,如果超过了就新建文件(文件名后缀是1、2、3依次增加);
-d:将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd:将匹配信息包的代码以c语言程序段的格式给出;
-ddd:将匹配信息包的代码以十进制的形式给出;
-D:列出当前主机的所有网卡编号和名称,可以用于选项 -i;
-e:在输出行打印出数据链路层的头部信息;
-f:将外部的Internet地址以数字的形式打印出来;
-F<表达文件>:从指定的文件中读取表达式,忽略其它的表达式;
-i<网络界面>:监听主机的该网卡上的数据流,如果没有指定,就会使用最小网卡编号的网卡(在选项-D可知道,但是不包括环路接口),linux 2.2 内核及之后的版本支持 any 网卡,用于指代任意网卡;
-l:如果没有使用 -w 选项,就可以将报文打印到 标准输出终端(此时这是默认);
-n:显示ip,而不是主机名;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q:快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件中读取包(这些包一般通过-w选项产生);
-s<数据包大小>:指定抓包显示一行的宽度,-s0表示可按包长显示完整的包,经常和-A一起用,默认截取长度为60个字节,但一般ethernet MTU都是1500字节。所以,要抓取大于60字节的包时,使用默认参数就会导致包数据丢失;
-S:用绝对而非相对数值列出TCP关联数;
-t:在输出的每一行不打印时间戳;
-tt:在输出的每一行显示未经格式化的时间戳记;
-T<数据包类型>:将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议);
-v:输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv:输出详细的报文信息;
-x/-xx/-X/-XX:以十六进制显示包内容,几个选项只有细微的差别,详见man手册;
-w<数据包文件>:直接将包写入文件中,并不分析和打印出来;
expression:用于筛选的逻辑表达式;
实操练习##
ifconfig (Mac系统,查看本机网卡信息)

我们来抓取baidu的数据,
ping www.baidu.com,看到控制台返回了IP:14.215.177.39
我们根据tcpdump的命令语法,来抓包并导出文件,执行以下命令:
tcpdump -i en0 -s 0 -n -S host 14.215.177.39 -w ./Desktop/tcpdump_14.215.177.39_01.cap
2.Wireshark工具
使用打开已经安装好的Wireshark,点击打开文件(./Desktop/tcpdump_14.215.177.39_01.cap)
之后,我们就可以点击和过滤每个请求可以查看网络的数据包情况(包括握手、挥手) 。
最后,附上一篇总结的比较专业到位的文章链接:https://www.jianshu.com/p/a62ed1bb5b20

浙公网安备 33010602011771号