宏观视角下的浏览器之 HTTP 请求

宏观视角下的浏览器之 HTTP 请求

浏览器端发起 HTTP 请求流程

  1. 构建请求

首先,浏览器构建请求行信息(GET /index.html HTTP1.1),构建好后,浏览器准备发起网络请求。

  1. 查找缓存

在真正发起网络请求之前,浏览器会先在浏览器缓存中查询是否有要请求的文件。当浏览器发现请求的资源已经在浏览器缓存中存有副本,它会拦截请求,返回该资源的副本,并直接结束请求,而不会再去源服务器重新下载。

  1. 准备 IP 地址和端口

因为 HTTP 网络请求的第一步是建立 TCP 链接,建立 TCP 链接的第一步是需要准备 IP 地址和端口号。所以需要将 URL 地址转换为 IP 地址,这套系统叫做“域名系统”,简称 DNS(Domain Name System)

所以第一步浏览器会请求 DNS 返回域名对应的 IP。当然浏览器还提供了 DNS 数据缓存服务,如果某个域名已经解析过了,那么浏览器会缓存解析的结果,以供下次查询时直接使用,这样也会减少一次网络请求。拿到 IP 之后,接下来就需要获取端口号了。通常情况下,如果 URL 没有特别指明端口号,那么 HTTP 协议默认是 80 端口。

  1. 等待 TCP 队列

现在已经把端口和 IP 地址都准备好了,那么下一步是不是可以建立 TCP 连接了呢?答案依然是“不行”。Chrome 有个机制,同一个域名同时最多只能建立 6 个 TCP 连接,如果在同一个域名下同时有 10 个请求发生,那么其中 4 个请求会进入排队等待状态,直至进行中的请求完成。当然,如果当前请求数量少于 6,会直接进入下一步,建立 TCP 连接。

  1. 建立 TCP 连接

  2. 发送 HTTP 请求

一旦建立了 TCP 连接,浏览器就可以和服务器进行通信了。而 HTTP 中的数据正是在这个通信过程中传输的。
一个请求包含请求行、请求头和请求体。请求行包含了请求方法、请求 URI 和 HTTP 版本协议。请求头包含了浏览器所使用的操作系统、浏览器内核等信息、当前请求的域名信息、浏览器端的 Cookie 信息,等等。

服务器端处理 HTTP 请求流程

  1. 返回请求

返回的数据包括响应行、响应头和响应体。响应行包括协议版本和状态码。响应头包含了服务器自身的一些信息,比如服务器生成返回数据的时间、返回的数据类型(JSON、HTML、流媒体等类型),以及服务器要在客户端保存的 Cookie 等信息。

  1. 断开链接

通常情况下,一旦服务器向客户端返回了请求数据,它就要关闭 TCP 连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值