一般的回答
- 浏览器根据地址栏的输入内容,判断是“搜索”还是“请求url”
- 进行DNS解析,根据域名找到对应的IP地址
- 建立TCP连接,会有一个三次握手的过程
- 发送HTTP请求
- 服务器接收到请求,进行处理,并将结果响应给浏览器
- 浏览器接收到响应,准备渲染页面
- 浏览器和服务器如果不再需要通信了,就断开TCP连接,会有一个四次挥手的过程
- 浏览器渲染页面,用户看见
更关键的点,在于浏览器是如何渲染页面的。
更详细的答案
基于这道题,能把整个互联网的知识涵盖进来,写一本大书绰绰有余。
我们还是只讲最基本的东西。
先看一张流程图
从输入 URL 到页面展示完整流程示意图
这个过程可以大致描述为如下。
首先,浏览器进程接收到用户输入的 URL 请求,浏览器进程便将该 URL 转发给网络进程。
然后,在网络进程中发起真正的 URL 请求。
接着网络进程接收到了响应头数据,便解析响应头数据,并将数据转发给浏览器进程。
浏览器进程接收到网络进程的响应头数据之后,发送“提交导航 (CommitNavigation)”消息到渲染进程;
渲染进程接收到“提交导航”的消息之后,便开始准备接收 HTML 数据,接收数据的方式是直接和网络进程建立数据管道;
最后渲染进程会向浏览器进程“确认提交”,这是告诉浏览器进程:“已经准备好接受和解析页面数据了”。
浏览器进程接收到渲染进程“提交文档”的消息之后,便开始移除之前旧的文档,然后更新浏览器进程中的页面状态。
导航:
用户发出 URL 请求到页面开始解析的这个过程,就叫做导航。
**
**