浏览器输入URL到页面的全过程

在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)页面绘制

猜你喜欢

转载自blog.csdn.net/weixiwo/article/details/129541667