主要过程如下:
1.DNS解析
2.建立TCP连接
3.发送HTTP请求
4.服务器接受请求并响应
5.浏览器解析并进行渲染
6.连接结束
一、DNS解析
简单来说就是将用户在浏览器中输入的域名解析成服务器的ip地址,将域名解析为ip地址的过程就叫做DNS解析。DNS解析过程是一个递归查询的过程,存在着多次TCP/UDP请求,占用资源严重,所以就涉及到DNS优化。
DNS优化的两种方式
1.DNS缓存,一般可分为:浏览器缓存、系统缓存、路由器缓存、IPS缓存、跟域名缓存、顶级域名缓存和主域名服务器缓存。
2.DNS负载均衡,DNS服务器接收到用户发来的请求,返回一个最合适的ip地址给用户,根据用户的地理位置和其他传输效率等因素分配,这个过程叫做DNS负载均衡,也叫做DNS重定向。
二、建立TCP连接
通过DNS解析拿到服务器地址之后,就需要客户端与服务器建立连接,这个过程是由TCP协议完成的,这个过程就是我们熟悉的三次握手:
第一次握手:客户端向服务器发生一个syn(x)包,并进入SYN_SENT状态,等待服务器确认。
第二次握手:服务器接受到客户端发送过来的syn包,同事必须曲儿客户端的SYN(ack=x+1),然后还需要向客户端发送一个SYN包syn(y),服务器进入SYN_RECV状态。
第三次握手:客户端接收到服务器发送的SYN+ACK包,并向服务器发送一个syn(ack=y+1)包,此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
三、发送HTTP请求
在客户端与服务器连接成功后,客户端需要告诉服务器做什么,即向服务器发送一个HTTP请求,一个HTTP请求包含三个部分:请求行、请求报头、请求正文。
四、服务器接受请求并响应
服务器接受到客户端发送过来的请求后,经过处理,返回相应报文,相应报文也包含三个部分:状态码、响应头部、响应正文。
五、浏览器解析并进行渲染
客户端在接收服务器传输过来的文件之后,便由浏览器的引擎开始解析文件并在屏幕中渲染,其步骤主要如下:
1. 接收字节,处理HTML并构建出DOM树;
2. 处理CSS文件并构建出CSSOM树;
3. 将DOM树和CSSOM树结合起来并构成渲染树;
4. 根据渲染树来布局,并计算出各个元素的几何信息;
5. 在屏幕中渲染像素,并绘制节点。
六、连接结束
当客户端从服务器那接收完所有数据之后,便会向服务器发送一个信号,请求与服务器断开连接,这就是我们常说的四次挥手过程。