WiresShark是号称全世界最流行的网络分析工具(它的官网自己说的)。下载地址:https://www.wireshark.org/#download,目前最新版本是2.6.2。我本地用的是汉化的2.4.4,64位win10操作系统。安装成功后出现蓝色鲨鱼鳍快捷图标,双击后显示如下界面:
双击需要监控的接口名称(上图中的以太网或WLAN,波动的线条表示有网络,鼠标放上去会显示MAC地址和IP地址)就可以开始抓包了。比如我双击WLAN,登陆一个网站,鲨鱼给出如下界面:
上面是鲨鱼实时捕获到发送/接受的报文。上端面板每一行对应一个网络报文,默认显示报文接收时间(相对开始抓取的时间点),源和目标IP地址,使用协议和报文相关信息。报文会有颜色区分,一般黑色表示有问题的TCP报文。点击某一行可以在下面两个窗口看到更多信息。中间窗口点击“>”图标显示报文里面每一层的详细信息。底端窗口同时以十六进制和ASCII码的方式列出报文内容。点击左上角点红色按钮停止抓包,点它旁边的蓝色鲨鱼鳍继续抓包。停止抓包后点右上角叉图标退出当前接口监控。
可以在工具栏下方的框里输入表达式过滤报文,比如我现在想看http协议的报文,输入http后点击右侧的"->":
我们在工具栏“分析” -> “显示过滤器”中可以看到具体的过滤表达式:
用好过滤器对于定位问题非常关键。没有过滤器一条一条报文的找,无异于大海捞针。过滤器可基于协议,应用,域名,或字符,对大小写敏感。基于协议的如arp、tcp、ip、ipv6等。基于应用的如http、dns、tftp等。基于域名如ftp.request.command(显示所有包含命令的FTP数据流,比如USER,PASS,或RETR命令)。基于字符的如tcp.analysis.flags(示所有包含TCP分析标识的所有报文,包括报文丢失,重传,或零窗口标识)。
右击上端面板一条网络报文 -> “追踪流” -> “TCP流”,可以看到请求客户端和服务端的所有会话: