知识总结:从输入URL到页面加载发生了什么(前端经典面试题)

150 篇文章 2 订阅
12 篇文章 0 订阅

目录

① URL解析

② DNS(域名系统)解析

③ 建立TCP连接(三次握手)

④ HTTP请求

⑤ HTTP响应

⑥ 关闭TCP连接(四次握手)

⑦ 页面渲染


由图可知,从资源加载时序的角度分析,浏览器发起请求到页面渲染完成会经历以下几个阶段: 

预处理-Resource Scheduling    =>  DNS解析-Stalled/DNS Lookup =>

建立连接-Inital connection/SSL =>  发起HTTP请求-Request sent   =>

等待响应-Waiting:TTFB             =>  接收数据-Content Download    =>

浏览器解析渲染页面

 完整的URL解析过程大致总结为以下7个步骤:

① URL解析

当用户在浏览器地址栏输入内容时,浏览器会判断是URL还是搜索关键字。如果是解析为URL则开始寻找URL对应的IP地址,和是否有可用的缓存。否则按照搜索关键字处理交给默认搜索引擎搜索。

(1)解析URL:首先会对 URL 进行解析,分析所需要使用的传输协议和请求的资源的路径。如果输入的 URL 中的协议或者主机名不合法,将会把地址栏中输入的内容传递给搜索引擎。如果没有问题,浏览器会检查 URL 中是否出现了非法字符,如果存在非法字符,则对非法字符进行转义后再进行下一过程。

(2)缓存判断:浏览器会判断所请求的资源是否在缓存里,如果请求的资源在缓存里并且没有失效,那么就直接使用,否则向服务器发起新的请求。

② DNS(域名系统)解析

DNS服务器会根据用户提供的域名查找对应的IP地址。DNS解析 的过程就是寻找哪台机器上有你需要资源的过程(网址转换为IP地址)。(优化:DNS缓存(将资源放在服务器端)、DNS负载均衡)分析出服务器地址和资源位置

(3)DNS解析:下一步首先需要获取的是输入的 URL 中的域名的 IP 地址,首先会判断本地是否有该域名的 IP 地址的缓存,如果有则使用,如果没有则向本地 DNS 服务器发起请求。本地 DNS 服务器也会先检查是否存在缓存,如果没有就会先向根域名服务器发起请求,获得负责的顶级域名服务器的地址后,再向顶级域名服务器请求,然后获得负责的权威域名服务器的地址后,再向权威域名服务器发起请求,最终获得域名的 IP 地址后,本地 DNS 服务器再将这个 IP 地址返回给请求的用户。用户向本地 DNS 服务器发起请求属于递归请求,本地 DNS 服务器向各级域名服务器发起请求属于迭代请求。 

③ 建立TCP连接(三次握手)

浏览器向服务器发起TCP连接,与服务器建立TCP三次握手。

客户端发送SYN数据包来表示请求连接,服务器响应SYN和ACK的数据包来表示同意建立连接,客户端再发送ACK数据包来表示成功连接。

④ 客户端发送HTTP请求

浏览器将HTTP请求数据发给服务器。发送HTTP请求的过程就是构建HTTP请求报文并通过TCP协议发送到服务器指定端口(HTTP协议80/8080, HTTPS协议443)

请求行(请求方法+请求地址+HTTP协议版本) + 请求头部(浏览器的信息,键值对组成) + 空行(表示没有请求头部了) + 请求数据

⑤ 服务器处理请求,并做出HTTP响应

服务器处理收到的请求,返回响应结果给浏览器。从服务器接收请求到对应后台接收到请求,内部会有很多处理,包括:负载均衡和后台处理

状态行(3位数字状态码) + 响应头部(键值对组成,一行一对) + 空行(表示没有响应头部了) + 响应数据

⑥ 关闭TCP连接(四次握手)

数据传输完成后,由于TCP是半关闭(half-close)的,还要经过四次握手以终止连接。

⑦ 页面渲染

当浏览器拿到响应数据后,会对响应数据进行解析,然后进行页面渲染

具体:说说页面渲染的过程_小草莓蹦蹦跳的博客-CSDN博客

以上步骤中,1为缓存相关,2、3、4、5、6为网络相关,7为浏览器相关

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值