抓包分析Http301重定向流程

环境描述

         客户端访问www.espn.com,由于此域名已不存在,相关网站信息转到www.espn.go.com。相关trace文件,见附件。

分析过程

先用sniffer打开trace,查看相关数据包,如下图:

 

前两个为DNS查询及响应,客户端获取到服务器IP,进行了TCP三次握手(第3-5个数据包)。第6个包为http get,通过sniffer解码如下图:

 

请求类型为GET,版本为http 1.1URIwww.espn.com

7个包为TCP的确认,第89个包的出现属于乱序(判定原因后面会解释)。

10个包,为服务器端的响应,如下图:

 

注意上面黄色标出的3个字段。

响应的状态码为301,并进行了此代码的含义:永久移除,即此域名已经不存在了。

Connection字段与get包此字段进行对比:

Connection: Keep-AliveConnection: close,这也是http1.11.0的一个主要区别,1.1支持在一个TCP会话中进行多次应用请求,而1.0默认只支持1个。

3个黄色标出部分,显示了重定向的URLhttp://espn.go.com

1214为客户端对重定向域名的解析

 

接下来客户端又进行了新的TCP连接,并发起对新域名的get请求,如下图第19个包:

 

接下来服务器进行了成功的响应,http 200,如下图:

 

另外需要指出的是,sniffer给出了针对这个响应结果,后续数据的传送序列,这个序列可以帮助分析人员很直观的定位丢包,及分析重传情况。这个序列也是sniffer独有,其他分析产品没有提供的,如下图:

 

后续数据共分为21个包进行传输,黄色部分标出了这些数据包在整个trace文件中的位置。

这样在后续的每个数据包中都会体现其在整个会话中的位置,如下图:

 

 

另由于IP网络是尽力转发,并不能保证在传输过程中各个数据包的到达顺序。所以会出现一些先发出的数据而后到的情况,如下图:

 

 

 

 

2012.5.14