浏览器从输入URL到页面展示过程


1.用户输入

浏览器的地址栏会判断用户输入的关键字是搜索内容还是URL
如果输入内容符合URL规则,地址栏会根据规则把这段内容加上协议合成完整URL

浏览器加载地址时需要等待提交文档阶段页面内容才会被替换


2.URL请求过程

浏览器进程通过进程间通信把URL请求发送至网络进程,网络进程接收到后发起真正URL请求流程

  1. 首先查找本地缓存是否缓存了该资源。如果有缓存资源则直接返回;如果没有则进行DNS解析获取请求域名服务器的IP地址进行网络请求。如果请求协议是HTTPS还需建立TLS连接
  2. 建立TCP连接,连接建立后,浏览器端构建请求信息并把和该域名相关的Cookie等数据附加到请求头中,然后向服务器发送请求信息
  3. 服务器收到请求信息后,根据请求信息生产响应数据并发给网络进程,网络进程接收并解析响应信息
    1. 重定向
      网络进程解析响应头若发现状态码是301302则说明服务器需要浏览器重定向到其他URL,网络进程就从响应头的Location字段中读取重定向的地址,再次发起请求
    2. 响应数据类型处理
      响应头中的Content-Type字段值说明了响应体数据的类型
      • 若字段值是application/octet-stream则数据是字节流类型,浏览器会按照下载类型来处理该请求,将请求提交给浏览器的下载管理器,同时导航流程结束
      • 若值是text/html则数据是HTML格式,浏览器继续进行导航流程开始准备渲染进程

3.准备渲染进程

如果从一个页面中打开另一个和当前页面属于同一站点的新页面,则新页面会复用父页面的渲染进程,即多个页面运行在同一渲染进程中

  • 同一站点
    根域名协议相同,包括根域名下的子域名和不同端口
    https://time.geekbang.org
    https://www.geekbang.org
    https://www.geekbang.org:8080
    # 以上三个地址都属于同一站点
    

渲染进程准备好后不能立即进入文档解析状态,因为文档数据(响应体数据)还在网络进程中,要将文档提交给渲染进程


4.提交文档

  1. 由浏览器进程发出,渲染进程接收到后和网络进程建立传输数据的管道
  2. 等文档数据传输完成后,渲染进程返回确认提交的消息给浏览器进程
  3. 浏览器进程收到确认提交信息后更新浏览器界面状态包括安全状态、地址栏URL、前进后退的历史状态,并更新Web页面

5.渲染阶段

文档被提交后渲染进程开始页面渲染流程。渲染完成后,渲染进程发送一个消息给浏览器进程,浏览器接收到后会停止标签图标上的加载动画


来源于:极客时间《浏览器工作原理与实践》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浏览器输入URL到显示页面过程大致可以分为以下几个步骤: 1. DNS解析:浏览器首先会解析URL中的域名部分,将其转换为对应的IP地址。它会先检查浏览器缓存中是否存在该域名的解析结果,如果没有,就会向本地操作系统或者网络中的DNS服务器发送查询请求,获取对应的IP地址。 2. 建立TCP连接:一旦获取到目标服务器的IP地址,浏览器会通过TCP/IP协议与服务器建立连接。这个过程中,浏览器会与服务器进行三次握手,确保双方能够正常通信。 3. 发送HTTP请求:建立TCP连接后,浏览器会发送HTTP请求给服务器。请求中包含了请求行(包括请求方法、URL路径和HTTP协议版本)、请求头(包含一些附加信息,如User-Agent、Cookie等)以及请求体(一般用于POST请求,传递数据)。 4. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行处理。处理过程可能包括查询数据库、读取文件等一系列操作,最终生成需要返回给浏览器的数据。 5. 接收响应并渲染页面:服务器处理完请求后,会将生成的响应数据封装成HTTP响应,并发送给浏览器浏览器接收到响应后,会根据响应头中的信息判断响应的内容类型,然后对内容进行解析和渲染。对于HTML页面浏览器会解析HTML结构、加载CSS和JavaScript文件,并根据这些文件渲染出最终的页面。 6. 关闭TCP连接:页面渲染完毕后,浏览器会关闭与服务器的TCP连接。如果页面中存在其他资源(如图片、样式表、脚本等),浏览器会继续发送相应的HTTP请求获取这些资源,并进行相应的渲染。 这就是浏览器输入URL到显示页面的基本过程。其中涉及到的具体细节和技术可以更加深入和复杂,但以上步骤概括了整个过程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值