0
点赞
收藏
分享

微信扫一扫

一次HTTP请求的分析


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

整体图

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

一次HTTP请求的分析_字符串

建立连接

http协议是基于tcp协议的,因此在数据传输之前,也要经过tcp的三次握手,可以看到第一部部分

一次HTTP请求的分析_wireshark_02


就是三次握手的部分(这里有两次重复,应该是刷新了两次并发请求了)

传输数据

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

Request URL:http://www.test.com.cn/seo/keywords.php
Request Method:GET
Status Code:200 OK
Remote Address:120.26.107.40:80

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

HTTP/1.1 200 OK
Date: Tue, 24 Jan 2017 07:53:12 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Length: 15
Connection: close
Content-Type: text/html; charset=UTF-8

这里是返回值

一次HTTP请求的分析_http协议_03


上面两个步骤对应的就是tcp的流量图。

结束请求

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

一次HTTP请求的分析_http协议_04

总结

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


举报

相关推荐

0 条评论