当您在浏览器地址栏输入 URL 并按下回车键时,浏览器将启动一个过程。
1.DNS 解析:浏览器会检查 URL 中的域名并将其发送到 DNS 服务器以获取与该域名相对应的 IP 地址。
2.建立 TCP 连接:一旦 DNS 解析完成,浏览器将与该 IP 地址建立 TCP 连接。
3.发送 HTTP 请求:一旦 TCP 连接建立,浏览器将向服务器发送 HTTP 请求。请求消息中包含请求方法 (如 GET 或 POST)、URL 和任何请求头。
4.接收响应并处理:一旦服务器收到请求,它将发送 HTTP 响应。响应消息包含状态码、响应头和响应体。浏览器将接收响应并处理它。
5.渲染页面:一旦浏览器收到响应并解析它,它将使用 HTML、CSS 和 JavaScript 等语言解析页面并渲染出来。浏览器将下载和执行页面上所有的资源,如图片、样式表和脚本,以呈现出完整的页面。
6.关闭连接:最后,一旦浏览器完成渲染页面,它将关闭与服务器的连接。
这些步骤的顺序和细节可能会因浏览器和服务器的具体情况而有所不同。
1.浏览器根据请求的URL交给DNS域名解析,找到真实IP,向服务器发起请求;
2.服务器交给后台处理完成后返回数据,浏览器接收文件(HTML、JS、CSS、图象等);
3.浏览器对加载到的资源(HTML、JS、CSS等)进行语法解析,建立相应的内部数据结构(如HTML的DOM);
4.载入解析到的资源文件,渲染页面,完成。
1.从浏览器接收 url 到开启网络请求线程(这一部分可以展开浏览器的机制以及进程与线程之间的关系)
2.开启网络线程到发出一个完整的 HTTP 请求(这一部分涉及到dns查询, TCP/IP 请求,五层因特网协议栈等知识)
3.l从服务器接收到请求到对应后台接收到请求(这一部分可能涉及到负载均衡,安全拦截以及后台内部的处理等等)
4.后台和前台的 HTTP 交互(这一部分包括 HTTP 头部、响应码、报文结构、 cookie 等知识,可以提下静态资源的 cookie 优化,以及编码解码,如 gzip 压缩等)
5.单独拎出来的缓存问题, HTTP 的缓存(这部分包括http缓存头部, ETag , catch-control 等)
6.浏览器接收到 HTTP 数据包后的解析流程(解析 html -词法分析然后解析成 dom 树、解析 css 生成 css 规则树、合并成 render 树,然后 layout 、 painting 渲染、复合图层的合成、 GPU 绘制、外链资源的处理、 loaded 和 DOMContentLoaded 等)
7. CSS 的可视化格式模型(元素的渲染规则,如包含块,控制框, BFC , IFC 等概念)
8. JS 引擎解析过程( JS 的解释阶段,预处理阶段,执行阶段生成执行上下文, VO ,作用域链、回收机制等等)
9.其它(可以拓展不同的知识模块,如跨域,web安全, hybrid 模式等等内容)
评论留言