我们可以把这个过程分为两个部分来分析
1.用户输入url 到 浏览器拿到服务端返回的数据
2.浏览器拿到数据 到 浏览器成功渲染拿到的数据
第一部分:
1.用户输入url地址
在用户输入url的时候,浏览器会从历史记录、书签等地方找输入的字符串可能对应的url然后给出智能提示。
2.DNS解析
用户点击回车发起请求,浏览器第一步要做的就是解析这个域名,
一般来说浏览器会首先查看本地硬盘的hosts文件,如果有的话就直接使用hosts中对应的ip
如果在本地hosts文件中没有找到对应的ip地址,浏览器会发送一个DNS请求到本地DNS服务器(一般由网络接入服务商提供,电信、移动)
本地DNS服务器接到请求后,本地DNS服务器会首先查询他的缓存记录,如果缓存中有就直接返回结果(递归方式进行查询),如果没有本地DNS服务器向DNS根服务器进行查询
根DNS服务器本身没有记录域名和ip的对应关系,而是告诉本地DNS服务器到域服务器上去查询,并给出域服务器地址
本地DNS服务器继续向域服务器(.com)发送请求,而域服务器会告诉本地DNS服务器,域名解析服务器的地址
最后本地DNS服务器向域名解析服务器发送请求,得到域名和ip的对应关系。本地DNS服务器会缓存这个地址。
3.浏览器向web服务器发送一个HTTP请求
浏览器与远程web服务器通过TCP三次握手来建立一个TAP/IP连接
浏览器通过TCP连接向web服务器发送一个http请求,请求信息包含请求方法 URL 协议/版本、请求头、请求正文。
4、服务器的永久重定向相应。比如 “http://google.com/” 重定向到 “http://www.google.com/”,浏览器跟踪重定向地址。
5、服务器处理请求,并返回一个HTTP响应(状态行、响应头、响应正文)
第二部分:
浏览器解析HTML文件时会‘自上而下’加载,并在加载过程中进行解析渲染,在解析过程中如果遇到请求外部资源时,请求过程是异步的不影响HTML文档加载。
浏览器解析过程:解析html以构建dom树=>解析css文件构建render树=>布局render树=>绘制render树