浏览器输入url后发生了什么
文章类型:Javascript
发布者:admin
发布时间:2023-02-27
从输入url到网页呈现,经历了很多步骤
一:合成url
1:根据用户输入的信息判断是搜索还是网址
2:如果是内容:搜索内容+默认搜索引擎url
3:如果是网址:加上协议合成合法的url
二:DNS域名解析
1:DNS的域名查找,在客户端和浏览器,本地DNS之间的查询方式是递归查询;在本地DNS服务器与根域及其子域之间的查询方式是迭代查询
三:建立TCP连接(3次握手)
1:建立连接。发送连接请求
2:服务器收到SYN报文段。允许连接后并发送ACK报文给浏览器
3:客户端收到服务器的SYN+ACK报文段,向服务器发送ACK报文段
四:发送Http请求
建立连接成功后,就可以发送请求和拿取数据,读取缓存等
五:关闭TCP连接(四次挥手)
1:客户端发送一个 FIN 报文,报文中指定序列号。客户端处于 FIN_WAIT1 状态。等待服务端确认
2:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 +1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT 状态。
3:发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。服务端进入LAST_ACK(最后确认)状态,等待客户端的确认
4:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 +1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态
六:浏览器渲染
1:构建DOM树=>渲染进程将 HTML 内容转换为能够读懂DOM 树结构
2:构建CSS树=>渲染引擎将 CSS 样式表转化为浏览器可以理解的 styleSheets,计算出 DOM 节点的样式
3:创建布局树=>整个成Render渲染树 ,并计算元素的布局信息
4:生成分层树=>进行位置和像素点的确立
5:生成绘制列表=>调用GPU进行绘制