这道题几乎成了面试必问的题目,其实可以考查很多知识点(http, 操作系统,web等等),无奈很多面试都拿这个开场,巴拉巴拉说半天,都怀疑面试官有没有听。答案网上很多,这里按照本人面试时的“口若悬河”模式,列举一下。
- 用户输入后,浏览器首先会判断是关键字,还是一个正常的域名。
- 如果是关键字,则交给默认的搜索引擎进行搜索,合成一个带关键词的新的URL。
- 如果是域名,浏览器进程就会把这个请求转给网络进程。
- 网络进程拿到URL之后,会发起请求流程。
- 先不慌,看看有没有缓存,网路进程先查看是否缓存了资源,如果有,则直接将资源返还给浏览器进程。如果没有缓存,则进入网络请求流程。
- 在请求之前,需要先进行DNS域名解析,获取对于的IP地址。首先,还是先看下是否存在DNS缓存,有则直接拿到IP发起请求;没有,就去DNS边缘节点服务器获取(失效才去源服务)。
- 然后就开始了通讯连接,TCP/IP三次握手四次挥手(又是一个经典面试题,自行翻资料吧),.........,OK,连成功,进行数据传输。
- 拿到数据,浏览器会给每一个页面分配一个渲染进程,进行页面绘制。
- 这里分配渲染进程需要补充下,Chrome默认会为每一个页面分配一个渲染进程,但是相同站点(根域名和协议相同)会运行在同一个渲染进程中。
按照惯例,从网络上找一张不错的流程图(图中可以看到整个过程需要各个进程之间的配合)。
图片获取于网络非作者原创