1、用户在浏览器中输入url地址
2、浏览器解析域名得到服务器ip地址(浏览器会访问host解析,如果存在就直接取出对应的ip地址,如果没有就开启一个DNS域名解析器)
hosts解析:hosts
文件通常位于操作系统中的一个本地文件,用于将特定的域名映射到指定的IP地址。当在浏览器中输入域名时,浏览器会首先检查操作系统的hosts
文件,看是否有该域名的映射记录。如果找到了对应的映射记录,浏览器将使用hosts
文件中指定的IP地址来访问网站。
DNS域名解析器:DNS(Domain Name System,域名系统)解析服务器是一种网络服务器,负责将域名转换为对应的IP地址。它充当了互联网中域名与IP地址之间的桥梁。在互联网上,每个设备都有一个唯一的IP地址用于标识和访问。然而,人们更容易记住和使用具有易于理解和记忆的域名。因此,当我们在浏览器中输入一个域名时,需要将它解析为对应的IP地址才能建立连接。DNS解析服务器的主要功能是进行域名解析。它们维护着一个包含大量域名和其对应IP地址的数据库,当接收到域名解析请求时,会根据查询的域名在数据库中查找相应的IP地址,并返回给请求方。这样,用户就可以使用域名来访问网站,而无需记住复杂的IP地址。
3、TCP三次握手建立客户端和服务器的连接:第三次握手的报文已经可以携带数据了。
4、客户端发送HTTP请求获取服务器端的静态资源
5、服务器发送HTTP响应报文给客户端,客户端获取到页面静态资源
6、TCP四次挥手关闭客户端和服务器的连接
四次挥手过程如下:
第一次挥手:客户端--->服务器 FIN=1,ack=1,seq=u 客户端状态变为FIN_WAIT_1
第二次挥手:服务器--->客户端 ACK=1,ack=u+1,seq=v 服务器状态变为CLOSE_WAIT,TCP进入半关闭状态
第三次挥手:服务器--->客户端 FIN=1,ACK=1,ack=u+1,seq=w 服务器状态变为LAST_ACK
第四次挥手:客户端--->服务器 ACK=1,ack=w+1,seq=u+1 客户端状态变为TIME_WAIT,此时TCP未释放,需要等待计时器计时完成后,客户端状态变为CLOSED
7、浏览器解析文档资源并渲染页面
具体过程:a. 获取HTML文件:浏览器向服务器发送请求,获取HTML文件。 b. 构建DOM树:浏览器解析HTML文件,构建DOM(Document Object Model)树。DOM树是表示HTML文档结构的树状结构,它将标记语言转换为可供编程语言(如JavaScript)操作的对象模型。 c. 构建CSSOM树:同时,浏览器还会解析CSS文件,构建CSSOM(CSS Object Model)树。CSSOM树表示CSS样式规则和元素之间的关系。 d. 合并DOM和CSSOM:浏览器将DOM树和CSSOM树合并,创建渲染树(Render Tree)。渲染树是DOM元素和其样式规则的结合,它只包含需要显示在屏幕上的元素。 e. 布局计算(Layout):浏览器计算渲染树中每个元素在屏幕上的位置和大小,并确定页面的布局。 f. 绘制(Painting):浏览器使用绘图引擎将渲染树中的元素绘制到屏幕上,形成最终的页面呈现。 g. 重绘与重排:如果页面的某个元素发生变化(例如样式改变、动画效果),浏览器会根据需要进行重绘(只更新像素颜色)或重排(重新计算布局和绘制)。重绘和重排的频率应尽量降低,以提高页面性能。 h. JavaScript解析与执行:在渲染过程中,如果遇到JavaScript代码,浏览器会逐行解析并执行它们。JavaScript可以操作DOM树和CSSOM树,改变页面的内容和样式。