从url输入到页面显示全过程

136 阅读2分钟

1、在浏览器地址栏中输入url

  • 校验是否是合法URL
  • 合法则校验URL是否完整。如果不完整的话,可能对地址进行猜测,补全前缀或者后缀。
  • 不合法的话,则会将输入信息作为查询内容使用默认浏览器查询。

2、查找强缓存

  • 浏览器在发起真正的网络请求前,会先检查浏览器的强缓存,如果命中,直接返回对应资源文件的副本。否则进入下一步。

3、在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。

  • 发送真正网络请求首先需要进行 DNS 解析,目的就是找到 URL 对应的服务器 IP 地址。
  • DNS 解析的过程,大致是先查找本地 DNS 缓存,找不到就问本地 DNS 服务器,再依次问根域 DNS 服务器,一级域名服务器,二级域名服务器,最后把找到的 IP 地址层层传递回来。

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

  • 三次握手是因为浏览器和服务器都需要确认对方有正常的收发能力。

5、握手成功后,浏览器向服务器发送http请求,请求数据包。如果使用HTTPS,会在TCP和HTTP中间加一层协议,用于加密与认证。HTTPS采用ssl和tls协议。

  • SSL协议的作用是认证客户端和服务器,确保数据发送到正确的客户端和服务器,加密数据防止数据中途被窃取,维护数据完整性,确保数据过程中不被改变。
  • 安全传输层协议(TLS)用于在两个通信应用程序之间提供保密性和数据完整性。

6、服务器处理收到的请求,将数据返回至浏览器
7、浏览器收到HTTP响应

  • 查找协商缓存:如果 HTTP 响应行中的状态码为 304 (Not Modified 未修改),内容为空时,那么就相当于告诉浏览器“服务器上的资源跟你本地缓存的副本一样,从缓存中拿就行啦”。

8、读取页面内容,浏览器渲染,解析html源码

  • 在浏览器没有完整接受全部HTML文档时,它就已经开始显示这个页面了

9、生成Dom树、解析css样式、js交互
10、断开 TCP 连接

  • 浏览器接受完服务器返回的资源后,需要断开 TCP 连接。断开 TCP 连接需要经历四次挥手。