前端面试系列一—HTTP相关

35 阅读2分钟

说说地址栏输入URL敲下回车后发生了什么?

 

graph LR
URL解析 --> DNS查询 --> TCP连接 --> HTTP请求 --> 响应请求 --> 页面渲染

 

1 URL解析

浏览器首页判断输入的是一个合法的URL还是一个待搜索的关键词,根据输入的内容进行相应的操作。 一个标准的url结构如下:

https://34.23.501.44:8888/public/admin/index?id=1&sid=5#brand

分别对应的是协议-域名-端口-路径-查询字符串-锚点链接

2 DNS查询

DNS(Domain Names System),即域名系统,是进行域名和与之对应的IP地址进行转换的服务器,负责将域名翻译成IP地址。

page_1.png

3 TCP连接

TCP是一种面向有连接的传输层协议,在确定目标服务器的IP地址后,经历三次握手建立TCP连接,流程如下:

三次握手.png

4 发送HTTP请求

建立TCP连接后,可以进行通信,浏览器发送http请求到目标服务器。

5 响应请求

当服务器接收到浏览器的请求后,就会进行处理,完成之后会返回一个HTTP响应消息。 在服务器响应之后,由于http默认开始长连接keep-alive,当页面关闭之后,tcp连接会经过四次挥手完成断开流程。

6 页面渲染

当浏览器接收到服务器返回的资源后,会对资源进行解析:

  • 查看响应头的消息,根据不同的指示做对应处理,比如存储cookie,重定向,缓存资源等
  • 查看响应头的Content-Type的值,根据不同的资源类型采用不同的解析方式 页面渲染流程:
  • 解析HTML,构建DOM树
  • 解析CSS,生成CSS规则树
  • 合并DOM树和CSS规则,生成render树
  • 布局render树,计算各元素尺寸,位置
  • 绘制render树,绘制页面像素信息
  • 浏览器将像素信息发送给GPU,GPU合并渲染层,显示在屏幕上