详细的HTTP请求流程

浏览器端发起HTTP请求流程

如果你在浏览器地址栏中输入百度网站的地址:https://www.baidu.com,那么接下来,浏览器会完成哪些动作呢?我们就一步一步详细"追踪"下。

1.构建请求

首先,浏览器构建请求行信息(如下所示),构建好后,浏览器准备发起网络请求。

GET /index.html HTTP1.1

2.查找缓存

在真正发起网络请求之前,浏览器会先在浏览器缓存中查询是否有要请求的文件。其中,浏览器缓存是一种本地保持资源副本,以供下次请求时直接使用的技术。

当浏览器发现请求的资源已经在浏览器缓存中存有副本,它会拦截请求,返回该资源的副本,并直接结束请求,而不会再去源服务器重新下载。这样做的好处有:

  • 缓解服务器端压力,提升性能(获取资源的耗时更短了)。
  • 对于网站来说,缓存是实现快速资源加载的重要组成部分。

当然,如果缓存查找失败了,就会进入网络请求过程了。

3.准备IP地址和端口

我们知道一个完整的TCP连接包括三个阶段:建立连接传输数据断开连接HTTP的内容是通过TCP的数据传输阶段来实现的
在这里插入图片描述
数据包是通过IP地址传输给接收端的,而我们在地址栏中输入的是个域名(这是因为域名比较容易记忆)。在IP地址和域名之间存在着一个一 一映射的关系,这套域名映射为IP的系统就叫做"域名系统",简称DNS(Domain Name System)。

所以,经过域名系统,我们得到了域名所对应的IP地址。

4.等待TCP队列

现在已经把端口和IP地址都准备好了,那么下一步是不是可以建立TCP连接了呢?

答案依然是"不行"。Chrome有个机制,同一个域名同时最多只能支持6个TCP连接,如果在同一个域名下有10个请求发生,那么其中4个会进入排队等待状态,直至进行中的请求完成。

当然,如果当前请求数量少于6,会直接进入下一步,建立TCP连接。

5.建立TCP连接

排队等待结束之后,终于可以快乐地和服务器握手了,在HTTP工作开始之前,浏览器通过TCP与服务器建立连接。

6.发送HTTP请求

一旦建立了TCP连接,浏览器就可以和服务器进行通信了。而HTTP中的数据正是在这个通信过程中传输的。
结合下图来理解浏览器是如何发送请求信息给服务器的。
在这里插入图片描述
首先浏览器会向服务器发送请求行,它包括了请求方法、请求URI(Uniform Resource Identifier)和HTTP版本协议

发送请求行,就是告诉服务器浏览器需要什么资源,最常用的请求方法是Get。另外一个常用的请求方法是POST,它用于发送一些数据给服务器,比如登录一个网站,就需要通过POST方法把用户信息发送给服务器。如果使用POST方法,那么浏览器还要准备数据给服务器,这里准备的数据是通过请求体来发送。

在浏览器发送请求行命令之后,还要以请求头形式发送其他一些信息,把浏览器的一些基础信息告诉服务器。比如包含了浏览器所使用的操作系统、浏览器内核等信息,以及当前请求的域名信息、浏览器端的Cookie信息,等等。

服务器端处理HTTP请求流程

1.返回请求

一旦服务器处理结束,便可以返回数据给浏览器了。你可以通过工具软件curl来查看返回请求数据,具体的使用方法是在命令行中输入以下命令:
curl -i https://www.baidu.com/

注意这里加上-i是为了返回响应行、响应头和响应体数据,返回的结果如下图所示。
在这里插入图片描述
首先服务器会返回响应行,包括协议版本和状态码。

但并不是所有的请求都可以被服务器处理的,无法处理的或者处理出错的信息,服务器会通过响应行的状态码来告诉浏览器它的处理结果,比如:

  • 最常用的状态码是200,表示处理成功。
  • 如果没有找到页面,则会返回404

随后,服务器随同响应向浏览器发送响应头。响应头包含了服务器自身的一些信息,比如服务器生成返回数据的时间、返回的数据类型(JSON、HTML、流媒体等类型),以及服务器要在客户端保存的Cookie等信息。

发送完响应头后,服务器就可以继续发送响应体的数据。通常,响应体就包含了HTML的实际内容。

以上这些就是服务器响应浏览器的具体过程。

2.断开连接

通常情况下,一旦服务器向客户端返回了请求数据,它就要关闭TCP连接。不过如果浏览器或者服务器在其头部信息中加入了:

Contention:Keep-Alive

那么TCP连接在发送后将仍然保持打开状态,这样浏览器就可以继续通过同一个TCP连接发送请求。保持TCP连接可以省去下次请求时需要建立连接的时间,提升资源加载速度。

以上就是整个HTTP请求历程。

发布了10 篇原创文章 · 获赞 0 · 访问量 122

猜你喜欢

转载自blog.csdn.net/weixin_42071117/article/details/104639946