一次HTTP请求的分析

来源:互联网 发布:chart.js 饼图 编辑:程序博客网 时间:2024/06/05 11:20

一次http请求到底发生了什么?有多少个逻辑?有多少次交互?本文借助wireshark简单阐述。

整体图

从一个全新的http请求发起,到获取到报文,到结束,一共有三个步骤。大图如下。
这里写图片描述

建立连接

http协议是基于tcp协议的,因此在数据传输之前,也要经过tcp的三次握手,可以看到第一部部分
这里写图片描述
就是三次握手的部分(这里有两次重复,应该是刷新了两次并发请求了)

传输数据

这里分为两部分,http协议是典型的请求/应答,因此http首先将请求发送,举本文的例子,就是发送http请求字符串:

Request URL:http://www.test.com.cn/seo/keywords.phpRequest Method:GETStatus Code:200 OKRemote Address:120.26.107.40:80

上面的意思是请求keywords.php这个页面,http应用会将这一串数据打包成tcp报文进行传输。
服务器端接收到请求后,通过本身的apache或者tomcat解析这个文件后,就将http响应用tcp封装后返回。

HTTP/1.1 200 OKDate: Tue, 24 Jan 2017 07:53:12 GMTServer: Apache/2.2.15 (CentOS)X-Powered-By: PHP/5.3.3Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0Pragma: no-cacheContent-Length: 15Connection: closeContent-Type: text/html; charset=UTF-8这里是返回值

这里写图片描述
上面两个步骤对应的就是tcp的流量图。

结束请求

在页面完成请求后,客户端就会发送关闭连接(具体关闭视情况而定),就是典型的四次挥手。在http应用可能只是socket.close();但是这一个关闭请求,会调用四次的tcp挥手请求。对应图所示
这里写图片描述

总结

一次请求到这里就完整并且结束了,由于不同的情况会话保持时间、请求方式不同可能会有不同的流量图,大致基本规律会如本文所示。

0 0