(32): 地址栏输入url敲下回车后,发生了什么

地址栏输入 URL 敲下回车后,发生了什么

一、简单分析

1、简单的分析,从输入 URL到回车后发生的行为如下:

  • (1)URL解析
  • (2)DNS 查询
  • (3)TCP 连接
  • (4)HTTP 请求
  • (5)响应请求
  • (6)页面渲染

二、详细分析

1、URL解析

(1)首先判断你输入的是一个合法的 url 还是一个待搜索的关键词,并且根据你输入的内容进行对应操作

(2)url的解析第过程中的第一步,一个url的结构解析如下:

2、DNS查询

(1)在之前文章中讲过DNS的查询,这里就不再讲述了

(2)整个查询过程如下图所示:

(3)最终,获取到了域名对应的目标服务器IP地址

3、TCP连接

(1)在之前文章中,了解到tcp是一种面向有连接的传输层协议

(2)在确定目标服务器服务器的IP地址后,则经历三次握手建立TCP连接,流程如下:

4、发送 http 请求

(1)当建立tcp连接之后,就可以在这基础上进行通信,浏览器发送 http 请求到目标服务器

(2)请求的内容包括:

  • (1)请求行
  • (2)请求头
  • (3)请求主体

5、响应请求

(1)当服务器接收到浏览器的请求之后,就会进行逻辑操作,处理完成之后返回一个HTTP响应消息,包括:

  • (1)状态行
  • (2)响应头
  • (3)响应正文

(2)在服务器响应之后,由于现在http默认开始长连接keep-alive,当页面关闭之后,tcp链接则会经过四次挥手完成断开

6、页面渲染

(1)当浏览器接收到服务器响应的资源后,首先会对资源进行解析:

  • (1)查看响应头的信息,根据不同的指示做对应处理,比如重定向,存储cookie,解压gzip,缓存资源等等
  • (2)查看响应头Content-Type 的值,根据不同的资源类型采用不同的解析方式

(2)关于页面的渲染过程如下:

  • (1)解析HTML,构建 DOM 树
  • (2)解析 CSS ,生成 CSS 规则树
  • (3)合并 DOM 树和 CSS 规则,生成 render 树
  • (4)布局 render 树( Layout / reflow ),负责各元素尺寸、位置的计算
  • (5)绘制 render 树( paint ),绘制页面像素信息
  • (6)浏览器会将各层的信息发送给 GPU,GPU 会将各层合成( composite ),显示在屏幕上

参考文献

  • (1)https://github.com/febobo/web-interview/issues/141
  • (2)https://zhuanlan.zhihu.com/p/80551769
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值