用户在浏览器输入URL或者跳转到一个URL后发生了什么

1、从URL到页面渲染的整个过程
1)处理用户输入
2)开始导航
3)读取响应
4)查找渲染进程
5)确认导航
6)渲染页面javascript

 

2、每一步作了哪些事情css

1)处理用户的输入html

浏览器的UI 线程处理用户的输入,判断是跳转过来的仍是用户本身的输入。java

判断依据是请求报文中referer这个参数,值是NUll,用户本身手动输入浏览器

 

2)开始导航缓存

用户敲了回车以后,监听用户行为的UI线程告诉network线程去获取网页;同时本身进入loading状态。安全

network线程如何获取网页资源的呢?服务器

2.1)dns域名解析网络

2.1.1)什么是dns域名解析?怎么进行的域名解析呢?
由于网络通讯是基于tcp/IP的,tcp/ip是基于IP地址的,因此对于域名是没法识别的,人们对于超过10位的IP地址记忆起来又有难度,因此就出现了域名;主机上用户配置了域名对应的子目录,当访问对应的域名时,就能够经过解析访问到对应子目录中的文件。tcp


2.1.2)域名解析:

  每一个PC端或者手机端都是一个DNS客户端。

    浏览器将URL中的域名提取出来给DNS客户端;

    dns客户端向DNS服务器发起请求报文,报文中包含URL给的主机名;经过一系列的缓存查询和分布式DNS集群查询;

    dns客户端收到响应报文,里边包含主机名对应的IP地址;

    浏览器获取到IP地址,就能够向IP地址所在的Http服务器发送http请求了。

 

2.1.3)创建http链接

   安全的数据传输必须创建tls链接,通过三次握手完成该项工做。

 

 

2.1.4)发起http请求

 

3)读取响应

当请求响应返回的时候,network 线程会依据 Content-Type 及 MIME Type sniffing 判断响应内容的格式;

常见的有text/html,text/css,text/javascript,image/gif,image/png,等等;

HTML格式文件的处理network线程通知UI线程完成资源获取,UI线程会寻找渲染进程;

其余格式的文件都交给下载管理器来作了,恶意站点和敏感字段的检查也会在该阶段完成。

 

4)寻找渲染进程,确认导航

network thread 确信浏览器能够导航到请求网页,network thread 会通知 UI thread 数据已经准备好,UI thread 会查找到一个 renderer process 进行网页的渲染。

当 UI 线程发送 URL 请求给 network 线程时,浏览器其实已经知道了将要导航到那个站点。UI thread 会并行的预先查找和启动一个渲染进程,若是一切正常,当 network thread 接收到数据时,渲染进程已经准备就绪了,可是若是遇到重定向,准备好的渲染进程也许就不可用了,这时候就须要重启一个新的渲染进程。

Browser Process 会给 renderer process 发送 IPC 消息来确认导航,一旦 Browser Process 收到 renderer process 的渲染确认消息,导航过程结束,页面加载过程开始。

 

5)页面渲染

经典的渲染过程

相关文章
相关标签/搜索