从输入URL到页面加载完成的过程
2021-04-12 22:16:15 21 举报
AI智能生成
从输入URL到页面加载完成的过程
作者其他创作
大纲/内容
1、用户输入URL, 浏览器会根据用户输入的信息判断是搜索还是网址
1.1 如果是搜索内容:将搜索内容+默认搜索引擎合成新的URL
1.2 如果用户输入的内容符合URL规则,浏览器就会根据URL协议,在这段内容上加上协议合成合法的URL
2、用户输入完内容,按下回车键,浏览器导航栏显示loading状态,但是页面还是呈现前一个页面,这是因为新页面的响应数据还没有获取到
3、浏览器进程通过进程间通信(IPC)把url请求发送给网络进程,GET /index.html HTTP1.1
4、网络进程接收到url请求后检查本地缓存是否缓存了该请求资源,如果有,拦截请求,直接200返回;否则,进入网络请求过程
5、如果没有,网络进程向web服务器发起http请求,请求流程如下:
5.1 进行DNS解析,获取服务器ip地址,端口
5.2 利用ip地址和服务器建立tcp连接
5.3 TCP三次握手建立连接,http请求加上TCP头部—包括源端口号、目的程序端口号和用于校验数据完整性的序号,向下传输
5.4 网络层在数据包上加上IP头部——包括源IP地址和目的IP地址,继续向下传输到底层
5.5 底层通过物理网络传输给目的服务器主机
5.6 目的服务器主机网络层接收到数据包,解析出IP头部,识别出数据部分,将解开的数据包向上传输到传输层
5.7 目的服务器主机传输层获取到数据包,解析出TCP头部,识别端口,将解开的数据包向上传输到应用层
5.8 服务器响应后,网络进程接收响应头和响应信息,并解析响应内容
6、网络进程解析响应流程
6.1 检查状态码,如果是301/302,则需要重定向,从Location自动中读取地址,重新进行第4步,如果是200,则继续处理请求。
6.2 200响应处理:网络进程将获取到的数据包进行解析,根据响应头中的Content-type来判断响应数据的类型,如果是字节流类型,就将该请求交给下载管理器,该导航流程结束,不再进行;如果是text/html类型,就通知浏览器进程获取到文档准备渲染
7、准备渲染进程
7.1 浏览器进程获取到通知,根据当前页面B是否是从页面A打开的并且和页面A是否是同一个站点(根域名和协议一样就被认为是同一个站点),如果满足上述条件,就复用之前网页的进程,否则,新创建一个单独的渲染进程
8、传输数据、更新状态
8.1 浏览器会发出“提交文档”的消息给渲染进程,渲染进程收到消息后,会和网络进程建立传输数据的“管道”,文档数据传输完成后,渲染进程会返回“确认提交”的消息给浏览器进程
8.2 浏览器收到“确认提交”的消息后,会更新浏览器的页面状态,包括了安全状态、地址栏的 URL、前进后退的历史状态,并更新web页面,此时的web页面是空白页
8.3 渲染进程对文档进行页面解析和子资源加载,HTML 通过HTM 解析器转成DOM Tree(二叉树类似结构的东西),CSS按照CSS 规则和CSS解释器转成CSSOM TREE,两个tree结合,形成render tree(不包含HTML的具体元素和元素要画的具体位置),通过Layout可以计算出每个元素具体的宽高颜色位置,结合起来,开始绘制,最后显示在屏幕中新页面显示出来
0 条评论
下一页