在b站上湖科大的视频中复习了部分内容,如果看不懂文章,可以再去听一下课。
1.用户在浏览器上输入URL地址
2.浏览器解析域名得到会服务器ip地址,DNS域名解析。DNS服务器是具有域名与ip对应关系的数据库。
DNS域名解析有两种方式,递归查询和迭代查询
递归查询:首先在本地域名服务器查询,再去根域名服务器查询。(根域名服务器是最高层次的域名服务器)然后再去顶级域名查选如图.com就是顶级域名,再去权限域名服务器查选。若查到再依次返回。
迭代查询:首先在本地域名服务器查询,再去根域名服务器查询,告诉本地域名服务器去哪个顶级域名服务器查询,得到结果之后返回本地服务器告诉再去哪个权限域名服务器,再返回本地域名服务器。一直到迭代查询到结果。
3.TCP三次握手简历客户端和服务端的连接
因为HTTP是基于TCP的可靠传输,所以要进行TCP的三次握手。
在这里客户端是主动连接,而服务端是被动连接。
第一次握手 客户端到服务端:(客户端试探连接)SYN=1(同步位)seq序列号(随机生成x)
第二次握手 服务端到客户端:(当服务端同意建立连接时)SYN=1(同步位)ACK=1(确认)seq=y(服务端随机生成的y) 序号 ack=x+1 表明是对序号为x的确认
第三次握手 客户端到服务端:(当客户端也真正同意建立连接)ACK=1(确认位)seq=x+1 (从客户端发起的请求序号) ack=y+1(是对服务器请求的回应)
4.客户端发送HTTP请求获取服务器端的静态资源
5.服务端发送HTTP响应报文给客户端,客户端获取到页面静态资源
6.TCP四次挥手关闭客户端和服务端的连接
TCP四次挥手中也是客户端主动选择关闭,服务端被动选择关闭。
第一次挥手 客户端到服务端:(客户端提出分手!)FIN=1 ACK=1 seq=u ack=v 此时客户端进入FIN-WAIT-1终止等待状态1
第二次挥手 服务端到客户端:(服务端疑惑反问是否确定?) ACK=1 seq=v ack=u+1(对于上一条消息的回应) 此时客户端进入FIN-WAIT-2终止等待状态2
(此时客户端到服务端的连接已经释放,TCP属于半关闭状态,但是服务端到客户端的进程没有关闭,可能持续一段时间,服务端向客户端发送消息,客户端仍要接收)
第三次挥手 服务端到客户端:(我还想再挽留一下!)FIN=1 ACK=1 seq=w ack=u+1 (ack对于客户端到服务端的重复确认)
第四次挥手 客户端到服务端:(被挽留了,分开吧) ACK=1 seq=u+1 ack=w+1(ack对于服务端到客户端消息的确认)
7.浏览器解析文档资源并渲染页面
(1)解析html资源,构建DOM树
(2)解析css资源,构建CSS Rule Tree
(3) js通过DOM API和CSS OM API来操作dom树
(4)解析完成之后完成综合DOM Tree和CSS Tree会生成Render Tree,计算每个元素的位置
(5)调用操作系统Native GUI的绘制
(6)页面绘制