聊聊对浏览器的认知(二):经典的从输入URL到页面展示,这中间发生了什么?

105 阅读2分钟

这道题几乎成了面试必问的题目,其实可以考查很多知识点(http, 操作系统,web等等),无奈很多面试都拿这个开场,巴拉巴拉说半天,都怀疑面试官有没有听。答案网上很多,这里按照本人面试时的“口若悬河”模式,列举一下。

  • 用户输入后,浏览器首先会判断是关键字,还是一个正常的域名。
  • 如果是关键字,则交给默认的搜索引擎进行搜索,合成一个带关键词的新的URL。
  • 如果是域名,浏览器进程就会把这个请求转给网络进程。
  • 网络进程拿到URL之后,会发起请求流程。
  • 先不慌,看看有没有缓存,网路进程先查看是否缓存了资源,如果有,则直接将资源返还给浏览器进程。如果没有缓存,则进入网络请求流程。
  • 在请求之前,需要先进行DNS域名解析,获取对于的IP地址。首先,还是先看下是否存在DNS缓存,有则直接拿到IP发起请求;没有,就去DNS边缘节点服务器获取(失效才去源服务)。
  • 然后就开始了通讯连接,TCP/IP三次握手四次挥手(又是一个经典面试题,自行翻资料吧),.........,OK,连成功,进行数据传输。
  • 拿到数据,浏览器会给每一个页面分配一个渲染进程,进行页面绘制。
  • 这里分配渲染进程需要补充下,Chrome默认会为每一个页面分配一个渲染进程,但是相同站点(根域名和协议相同)会运行在同一个渲染进程中。

按照惯例,从网络上找一张不错的流程图(图中可以看到整个过程需要各个进程之间的配合)。

图片获取于网络非作者原创