目录
1、用户在浏览器中输入url地址
2、缓存解析
3、浏览器进行DNS解析域名得到服务器ip地址
4、TCP三次握手建立客户端和服务器的连接
5、客户端发送HTTP请求获取服务器端的静态资源
6、服务器发送HTTP响应报文给客户端,客户端获取到页面静态资源
7、TCP四次挥手关闭客户端和服务器的连接
8、浏览器解析文档资源并渲染页面
1、用户在浏览器中输入url地址
2、缓存解析
浏览器获取了这个url,当然就去解析了,它先去缓存当中看看有没有,从 浏览器缓存-系统缓存-路由器缓存 当中查看,如果有从缓存当中显示页面,然后没有那就进行步骤三;
缓存就是把你之前访问的web资源,比如一些js,css,图片什么的保存在你本机的内存或者磁盘当中。
3、浏览器进行DNS解析域名得到服务器ip地址
浏览器会首先从缓存中找是否存在域名,如果存在就直接取出对应的ip地址,如果没有就开启一个DNS域名解析器。DNS域名解析器会首先访问顶级域名服务器,将对应的ip发给客户端;然后访问根域名解析器,将对应的ip发给客户端;最后访问本地域名服务器,得到最终的ip地址。
4、TCP三次握手建立客户端和服务器的连接
因为HTTP是基于TCP的可靠传输,所以在发送http数据报之前,需要先进行TCP的三次握手建立连接。三次握手过程如下:
- 第一次握手:客户端--->服务端 ack=1,seq=x(x随机生成)
- 第二次握手:服务端--->客户端 ACK=1,ack=x+1,seq=y(y随机生成)
- 第三次握手:客户端--->服务端 ACK=1,ack=y+1,seq=x+1
完成第三次握手时,实际上客户端已经与服务器建立了连接,所以第三次握手的报文已经可以携带数据了。
5、客户端发送HTTP请求获取服务器端的静态资源
6、服务器发送HTTP响应报文给客户端,客户端获取到页面静态资源
7、TCP四次挥手关闭客户端和服务器的连接
数据传输完毕后,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
8、浏览器解析文档资源并渲染页面
浏览器收到服务器发送的响应头和响应体,进行客户端渲染,生成Dom树、解析css样式、js交互。