1.2.2 抓包分析HTTP

在计算机中安装抓包工具可以捕获网卡发出和接收到的数据包,当然也能捕获应用程序通信的数据包。这样就可以直观地看到客户端和服务器端的交互过程,客户端发送了哪些请求,服务器端返回了哪些响应,这就是应用层协议的工作过程。

常用的抓包工具Ethereal有两个版本,在Windows XP操作系统和Windows Server 2003网络操作系统上使用的Ethereal抓包工具,在Windows 7和Windows 10操作系统上使用的Wireshark(Ethereal的升级版)抓包工具。以下操作是在安装了Windows 10操作系统的计算机上使用Wireshark抓包工具捕获访问搜狗网站的数据包。

先运行Wireshark抓包工具。选择用于抓包的网卡,笔者的计算机是无线上网,单击“WLAN”选项,再单击左上角的图片 59392按钮,开始抓包,如图1-10所示。

图1-10 选择抓包的网卡

访问河北师范大学官方网站,在搜索文本框中输入搜索的内容,最好是字符和数字,单击图片 59395按钮,如图1-11所示。

图1-11 登录网站

在命令提示符处输入“ping www.hebtu.edu.cn”,可以解析出该网站的IP地址,如图1-12所示。

图1-12 解析域名

在显示过滤器处输入“http and ip.addr == 202.206.100.34”,单击图片 59399按钮应用显示过滤器,只显示访问河北师范大学官方网站的HTTP请求和响应的数据包,如图1-13所示。选中第1396个数据包,可以看到该数据包中的HTTP请求报文,可以参照上一小节HTTP请求报文的格式进行对照,请求方法是GET。

图1-13 HTTP请求报文

第1440个数据包是Web服务响应的数据包,状态码为404。状态码404代表Not Found(找不到)。

图1-14所示的第11626个数据包是HTTP响应报文,状态码为200,表示成功处理了请求,一般情况下都是返回此状态码。可以看到响应报文的格式,可以参照上一小节HTTP响应报文的格式进行对照。

图1-14 HTTP响应报文

HTTP除了定义客户端使用GET方法请求网页,还定义了其他方法,如通过浏览器向Web服务器提交内容;又如登录网站、搜索网站需要使用POST方法。搜索刚才在搜索文本框中输入的内容,在显示过滤器处输入“http.request.method == POST”,单击图片 59403按钮应用显示过滤器。可以看到第19390个数据包,客户端使用POST方法将搜索的内容提交给Web服务器,如图1-15所示。

图1-15 使用HTTP中的POST方法

在显示过滤器处输入“http.request.method == POST”,单击图片 59407按钮,应用显示过滤器,如图1-16所示,右击其中一个数据包,单击“追踪流”→“TCP流”。

图1-16 追踪TCP流

这样即可将访问河北师范大学官方网站所有的客户端请求和服务器端响应的交互过程都集中在一起显示。可以在查找文本框中输入查找内容,定位内容所在的位置,如图1-17所示。

图1-17 查找输入的内容